我在寫一個允許用戶指定回調的庫。像這樣:讓打字稿知道對象是什麼類型
interface IParams {
context: any;
okCallback: (value: string) => void
... etc ...
}
class MsgBox {
static getInput(params: IParams) {
....
okCallback.call(params.context, value);
}
}
上下文的目的是將回調放在上下文中。因此,例如我可以這樣做:
MsgBox.getInput({
context: this,
okCallback(value) {
this.accessToEnclosingClass
}
}
由於回調需要訪問調用類的屬性。這使得它比在所有地方使用$ .proxy()更方便。
這工作正常,但是,問題與打印機編譯器。在回調打字稿中不知道this
的類型,所以對待它就像任何類型,並且不會爲我進行任何類型檢查,這會導致很多挫折。
有沒有辦法讓Typescript編譯器知道在這種情況下this
的類型是什麼?我可以這樣做:
okCallback(value) {
const self = this as EnclosingClassType;
self.accessToEnclosingClass
}
哪些工作,但我寧願使用this
(因爲否則是不小心使用this
,從而可能導致非編譯型類型錯誤的機會
當然這一點。一個簡單的例子,當this
環境未定義okCallback挑戰發生,但作爲一個單獨的函數。
在這個任何建議或想法?
在TS 2.0中可以輸入'this'。請參閱https://github.com/Microsoft/TypeScript/pull/6739。 – 2016-08-13 06:56:07