有沒有辦法將「成員變量」定義爲「擴展對象」而不是靜態類型(不使用接口)?如何在TypeScript中將成員變量聲明爲擴展類型?
只要是這樣的僞代碼:
class Foo {
bar -> extends Rectangle;
constructor(barInstance:IRectangle){
this.bar = barInstance;
this.bar.getArea(); //<-- is code completed because interface IRectangle
// no type error
this.bar.someCustomFunction = function() {
}
}
}
,而不是
class Foo {
bar: IRectangle;
//or
bar:Rectangle;
}
這樣我可以添加在基類或接口沒有得到錯誤類型不定義的屬性,而且還可以獲得代碼完成來自基類。嘿,懶惰嚴格打字?
我想做到這一點,而不必明確定義'東西',但動態分配它而不會引發類型錯誤,但也可以得到代碼提示...有點像this.bar.thing =()=> {return true;}本質上,鍵入到或 –
FlavorScape
如果您讓您的類將泛型類型的實例作爲構造函數參數,您可以編寫例如一個對象文字,並且可以推斷它的類型。我不確定在實例化之後分配新屬性併爲它們進行類型檢查有解決方案。這些模式傾向於混淆靜態分析。 –
如果以後確實需要添加其他屬性,我會讓它們成爲指定接口的可選成員。 –