在Typescript中扩展泛型参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Typescript中扩展泛型参数相关的知识,希望对你有一定的参考价值。
我想创建一个实用程序函数,通过向数组中的每个项添加isChecked
knockout observable属性来创建核对表。此函数应如下所示:
createCheckList<T>(allEntities: T[], selected: T[]) : CheckListItem<T> {
...
}
我返回一个CheckListItem<T>
因为这个接口应该扩展T以添加isChecked
属性。但是,打字稿不允许我这样做:
interface CheckListItem<T> extends T {
isChecked: KnockoutObservable<boolean>;
}
给我错误:
接口可能只扩展另一个类或接口。
有没有办法做到这一点?
答案
没有办法在TypeScript中表达这一点。
显然你可以这样做:
interface CheckListItem<T> {
isChecked: KnockoutObservable<boolean>;
item: T;
}
这有利于在碰巧拥有自己的isChecked
属性时不破坏对象。
另一答案
Since TypeScript 1.6你可以使用intersection types:
type CheckListItem<T> = T & {
isChecked: KnockoutObservable<boolean>;
};
以上是关于在Typescript中扩展泛型参数的主要内容,如果未能解决你的问题,请参考以下文章
扩展类型的泛型和 Typescript 中的普通类型有啥区别?