可以說我有一些財產dataItems一個基類,它是DataItem的數組:獲取變量的類型並創建該類型的新實例
export class BaseClass{
dataItems:DataItems[];
}
然後,我有幾類,其擴展BaseClass的和他們dataItems屬性是一些類延伸DataItems數組:
export class BetterClass extends BaseClass{
dataItems:BetterDataItems[];
}
export class BestClass extends BaseClass{
dataItems:BestDataItems[];
}
現在我想添加在BaseClass的一種方法,其創建dataItems並將它們添加到陣列。是否有可能在BaseClass中完成所有這些工作?我需要創建BetterDataItems或BestDataItems的實例,具體取決於所使用的類。
目前我簡單地添加:
dataItemType: typeof DataItem;
屬性BaseClass的並且在每個延伸類的BaseClass我重寫與適當的數據項類型這個變量:
在BetterClass:
dataItemType: typeof BetterDataItem = BetterDataItem;
in BestClass:
dataItemType: typeof BestDataItem = BestDataItem;
,然後在BaseClass的我這樣做:
var dataItem = new this.dataItemType();
這工作得很好,但我的問題是 - 這樣纔有可能避免具有所有dataItemType
財產?我可以找到一種dataItems
數組,然後創建一個新實例嗎?
謝謝!
+1;爲了完整起見,我認爲你可以在'BaseClass'中使用'instanceof'運算符,但在這種情況下它確實是一種反模式。 (http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf 4.13類型斷言) –
謝謝。所以我認爲不可能簡單地從一個變量中獲得一個類的類型,然後創建一個類?instanceof需要檢查每種類型,所以它不是一個好的解決方案。 – zeroin