2017-08-24 75 views
0

我熟悉this在打字稿中的箭頭函數的行爲(或者至少我是這麼認爲的)。 但是今天我碰到一個this迷迷糊糊的箭頭函數的參數列表中使用(這是從Alexa的-SDK的類型定義):Typescript:這個箭頭函數的內部參數

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; 
     } 
} 

但有一個更優雅的解決方案,而自我/這個作業和一個箭頭的功能?

+2

你應該在這裏檢查'這parameters'部分:https://www.typescriptlang.org/docs /handbook/functions.html – Amid

回答

1

在打字稿的新版本,你可以指定這個類型的僞參數設置爲功能

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