2013-09-24 43 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