1
看來我遇到了TS編譯器的一個奇怪的邊緣情況,當涉及到類型推斷時。下面的代碼(和註釋行一樣)應該(我相信)會產生一個編譯錯誤,但實際上並沒有。TypeScript多餘的字段檢查和類型推斷錯誤
interface IReturned {
theField?: string;
}
interface IFactory {
(): IReturned;
}
var factory : IFactory = function() /* : IReturned */{
return {
BROKEN: 'ERROR'
}
};
var instance = factory();
// instance.BROKEN;
什麼理想情況下應該發生的是,工廠函數的返回類型推斷爲IReturned,這意味着它是一個編譯錯誤返回一個對象文本與它過多的領域,因此,在設置了「破」屬性應該不是有效的。
如果使用IReturned將函數顯式註釋爲其返回類型,則確實會發生這種情況。 「實例」變量的類型也被正確推斷,並且試圖訪問下面一行中的「斷開」字段也是一個錯誤。
我失去了一些東西在這裏?有沒有辦法讓這個工作無需在任何地方添加冗餘類型定義?