當我將函數引用作爲參數傳遞給另一個函數,然後在某處調用它時,它會丟失「this」。爲了防止它,我必須將方法轉換爲箭頭函數。這裏是我的意思的例證:當我通過方法參考時,使TS發出警告
class Meeseeks{
private line="I'm mister Meeseeks";
lookAtMe(){ console.log(this.line+', look at me!'); }
}
// somewhere else:
let mr = new Meeseeks();
mr.lookAtMe();/// ok, prints fine
function callIt(fn:Function){ fn(); }
callIt(mr.lookAtMe);/// this one throws "Uncaught TypeError: Cannot read property 'line' of undefined"
因此,要解決它是把「lookAtMe」成箭頭功能的唯一途徑:
lookAtMe =() => console.log(this.line+', look at me!');
我的問題是:能打字稿提醒我,當我使用函數引用?因爲在編譯時遇到運行時錯誤,所以我討厭它,這就是爲什麼我首先使用TypeScript(我非常喜歡嚴格的類型化語言)。而現在,爲了防止它,我做了全部方法箭頭函數,並且它不適合繼承。
您知道的任何tsconfig條目或tslint條目?
不完全是你所要求的,但是這可以通過構造函數中的一些'bind'來阻止。 – Jokester