我熟悉打字稿中箭头函数内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;
}
}
但是有一个更优雅的解决方案没有自我/这个带箭头功能的分配吗?
答案 0 :(得分:2)
在较新版本的打字稿中,你可以指定它的类型作为函数的伪参数
let handlers: Handlers<IntentRequest> = {
"MyIntent": function (this: Handlers<IntentRequest> /* , realParam: string */) {
// this will have the type Handlers<IntentRequest>
}
}