在 TypeScript 中向现有类型添加属性

在 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类型中删除属性。

使用交集类型的主要好处是:

  1. 减少重复,因为我们不必在接口之间复制属性。
  2. 向我们代码的读者发出信号,表明这两种类型之间存在关系。