0
假設我有一個實現IItem
接口對象的數組:迭代中打字稿特定接口的項目
interface IItem {
getId() : string;
}
interface ISortableItem extends IItem {
getSortIndex() : number;
}
var items : IItem[] = [ ... ];
現在我想僅獲得實現ISortableItem
界面中的項目,但我不」 t認爲這些信息在運行時已經可用了。我可以用這樣的:
for (var i of items) {
if ((<ISortableItem>i).getSortIndex) {
...
}
}
雖然它的作品,我的程序員的心臟開始流血;-)是否有解決這一問題的一個更優雅的方式?
我不能使用一個類,因爲每個類實現'getId'不同。也可以在'IItem'接口中添加'getSortIndex'作爲可選方法。不知何故,分離界面看起來更乾淨。 –
好吧,這個問題和我的答案無論如何都是有見地的,但請記住,您可以通過實現接口('class Item implements IItem')來構建您的類。恕我直言,使用TypeScript最重要的是接口和類的組織。所以有時來自JS的代碼模式不適合用於TypeScript。 – drinchev