打字稿:这个箭头函数的内部参数

时间:2017-08-24 07:12:13

标签: typescript typescript-typings

我熟悉打字稿中箭头函数内this的行为(至少我是这么认为的)。 然而今天我偶然发现了一个在箭头函数的参数列表中使用的this(这是来自alexa-sdk的类型定义):

export interface Handlers<T> {
    [intent: string]: (this: Handler<T>) => void;
}

这实际意味着什么?我将如何实现这一目标?

let handlers: Handlers<IntentRequest> = {
    "MyIntent" = ???
}

我知道我可以做类似的事情:

let handlers: Handlers<IntentRequest> = {
        "MyIntent" = function() {
           let self: Alexa.Handler<IntentRequest> = this;
        }
}

但是有一个更优雅的解决方案没有自我/这个带箭头功能的分配吗?

1 个答案:

答案 0 :(得分:2)

在较新版本的打字稿中,你可以指定它的类型作为函数的伪参数

let handlers: Handlers<IntentRequest> = {
    "MyIntent": function (this: Handlers<IntentRequest> /* , realParam: string */) {
       // this will have the type Handlers<IntentRequest>
    }
}