2013-09-24 106 views
3

我想創建一個實用程序函數,它通過將一個isChecked敲除的observable屬性添加到數組中的每個項目來創建一個清單。這個功能應該是這樣的:在Typescript中擴展通用參數

createCheckList<T>(allEntities: T[], selected: T[]) : CheckListItem<T> { 
    ... 
} 

我返回CheckListItem<T>因爲這個接口應該擴展t若要添加isChecked財產。然而,打字稿不會允許我這樣做:

interface CheckListItem<T> extends T { 
    isChecked: KnockoutObservable<boolean>; 
} 

給我的錯誤:

An interface may only extend another class or interface.

有沒有辦法做到這一點?

回答

1

沒有辦法在TypeScript中表達這一點。

可以很明顯的做,而不是:

interface CheckListItem<T> { 
    isChecked: KnockoutObservable<boolean>; 
    item: T; 
} 

這有當它發生時有自己的isChecked財產沒有違反對象的優勢。

+1

感謝。是的,我曾考慮過這個,但它相當笨拙的恕我直言。我已經去了返回一個'任何[]',因爲我只使用淘汰賽的結果,類型安全不會給我買東西無論如何。 – Grokys