问题描述
例如我有接口
export Interface IPerson { name: string,age: number }
person: IPerson = { name: 'Mary',age: 20 };
我想声明如下:
superPerson 包含来自 IPerson 的所有字段加上字段 score
superPerson: { score: number } extends IPerson = { name: 'Mary',age: 20,score: 170}
无需单独定义新的接口或类型。
解决方法
这可以通过交叉类型来完成:
superPerson: IPerson & { score: number } = { name: 'Mary',age: 20,score: 170 }
请注意,如果您在单独的一行中执行此操作,它几乎是相同的,只需为类型指定一个名称,这样可以使弱小的人更容易理解,并允许重复使用该类型。
>type SuperPerson = IPerson & { score: number };
superPerson: SuperPerson = { name: 'Mary',score: 170};