Gro*_*kys 5 knockout.js typescript
我想创建一个实用程序函数,它通过向isChecked数组中的每个项目添加一个敲除 observable 属性来创建一个清单。此函数应如下所示:
createCheckList<T>(allEntities: T[], selected: T[]) : CheckListItem<T> {
...
}
Run Code Online (Sandbox Code Playgroud)
我返回 aCheckListItem<T>因为这个接口应该扩展 T 来添加isChecked属性。但是,打字稿不允许我这样做:
interface CheckListItem<T> extends T {
isChecked: KnockoutObservable<boolean>;
}
Run Code Online (Sandbox Code Playgroud)
给了我错误:
一个接口只能扩展另一个类或接口。
有没有办法做到这一点?
从 TypeScript 1.6 开始,您可以使用交集类型:
type CheckListItem<T> = T & {
isChecked: KnockoutObservable<boolean>;
};
Run Code Online (Sandbox Code Playgroud)
没有办法在 TypeScript 中表达这一点。
显然你可以这样做:
interface CheckListItem<T> {
isChecked: KnockoutObservable<boolean>;
item: T;
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,当对象恰好拥有自己的isChecked属性时,不会破坏该对象。
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |