我想创建一个实用程序函数,通过向数组中的每个项添加isChecked
knockout observable属性来创建核对表。此功能应如下所示:
createCheckList<T>(allEntities: T[], selected: T[]) : CheckListItem<T> {
...
}
我正在返回CheckListItem<T>
,因为此接口应扩展T以添加isChecked
属性。但是,打字稿不允许我这样做:
interface CheckListItem<T> extends T {
isChecked: KnockoutObservable<boolean>;
}
给我错误:
接口只能扩展另一个类或接口。
有没有办法做到这一点?
答案 0 :(得分:2)
没有办法在TypeScript中表达这一点。
显然你可以这样做:
interface CheckListItem<T> {
isChecked: KnockoutObservable<boolean>;
item: T;
}
这样做的好处是,当碰到具有自己的isChecked
属性时,不会破坏该对象。
答案 1 :(得分:1)
Since TypeScript 1.6您可以使用intersection types:
type CheckListItem<T> = T & {
isChecked: KnockoutObservable<boolean>;
};