在 TypeScript 中向现有类型添加属性
Add a property to an existing Type in TypeScript
使用交集类型向 TypeScript 中的现有类型添加属性,例如type Person = Employee & {myProperty: string}
. 交集类型允许我们通过扩展它们来构建新类型,并且最常用于组合现有对象类型。
索引.ts
type Employee = { id: number; name: string; }; // 👇️ use intersection type type Person = Employee & { country: string; }; const person: Person = { id: 1, name: 'Tom', country: 'Germany', };
交集类型
是使用 & 运算符定义的
&
。
索引.ts
type A = { a: string; }; type B = { b: string; }; // type Combined = { // a: string; // b: string; // } type Combined = A & B; const combined: Combined = { a: 'hello', b: 'world', };
交集类型允许我们通过扩展它们来构建新类型,并且最常用于组合现有对象类型。
索引.ts
interface Employee { id: number; } type Person = { name: string; }; type Developer = Employee & Person & { language: string; }; const dev: Developer = { id: 1, name: 'Tom', language: 'TypeScript', };
您可以根据需要使用尽可能多的交集类型来构造最终类型。
如果需要覆盖特定属性的类型,请使用Omit
实用程序类型。
索引.ts
type Person = { id: number; name: string; country: string; }; type Employee = Omit<Person, 'id'> & { id: string; // 👈️ override type of id property salary: number; }; const emp: Employee = { id: 'employee-number-1', name: 'Tom', salary: 100, country: 'Germany', };
该Person
类型具有 type 的id
属性,number
我们需要将该属性的类型更改为string
.
如果我们想覆盖它的类型,我们必须先从
Person
类型中删除属性。
使用交集类型的主要好处是:
- 减少重复,因为我们不必在接口之间复制属性。
- 向我们代码的读者发出信号,表明这两种类型之间存在关系。