2017-05-28 21 views
0

也許這個問題已經被問到了,但我找不到任何問題。它似乎很天真。 TypeScript與對象文字符號很好地結合,但是當定義內部方法時,它不能正確處理該函數內的this上下文,看起來this接收到any類型,所以沒有自動完成。TypeScript中的對象文字表示法中的函數。爲什麼`this`上下文是`any`類型的?

var foo = { 
    log(str) { 
     console.log(str); 
    }, 
    print(str) { 
     this. /* No autocompletion */ 
    } 
};  
foo. /* Normal autocompletion */ 

Playground

當然,我希望的是,自動完成正常工作的方法,消耗foo變量時,它以同樣的方式。我可以先聲明一個類,然後實例化這個對象,但是爲什麼它沒有聲明中間classinterface不起作用,在這種簡單的情況下,它好像是一個樣板文件?

回答

1

據對功能的官方TypeScript Documentation

[...]仍然any。這是因爲this來自對象字面量內的函數表達式。

在GitHub上TypeScript Wiki也有關於this關鍵字及其上下文良好的解釋。

+0

非常感謝,我們最好爲此申報一堂課,然後我們全部在一個地方。否則,我們有很多重複的代碼,接口定義和聲明,然後我們有兩個地方要維護。所以,對我而言,這意味着對象文字符號不太可用。 – tenbits

相關問題