跳到主要内容

TypeScript 交集类型

摘要:在本教程中,你将了解 TypeScript 交集类型,以通过组合多个现有类型来创建新类型。

TypeScript 交集类型简介

交集类型通过组合多个现有类型来创建新类型。 新类型具有现有类型的所有功能。

要组合类型,请使用 & 运算符,如下所示:

type typeAB = typeA & typeB;

typeAB 将具有 typeAtypeB 的所有属性。

请注意,使用 | 运算符定义的联合类型仅可保存 typeAtypeB

let varName = typeA | typeB; // union type

假设你有三个接口:BusinessPartnerIdentityContact

interface BusinessPartner {
name: string;
credit: number;
}

interface Identity {
id: number;
name: string;
}

interface Contact {
email: string;
phone: string;
}

下面定义了两种交集类型:

type Employee = Identity & Contact;
type Customer = BusinessPartner & Contact;

Employee 类型包含 IdentityContact 类型的所有属性:

type Employee = Identity & Contact;

let e: Employee = {
id: 100,
name: 'John Doe',
email: '[email protected]',
phone: '(408)-897-5684'
};

Customer 类型包含 BusinessPartnerContact 类型的所有属性:

type Customer = BusinessPartner & Contact;

let c: Customer = {
name: 'ABC Inc.',
credit: 1000000,
email: '[email protected]',
phone: '(408)-897-5735'
};

稍后,如果你想要实现员工销售,可以创建一个新的交集类型,其中包含 IdentityContactBusinessPartner 类型的所有属性:

type Employee = Identity & BusinessPartner & Contact;

let e: Employee = {
id: 100,
name: 'John Doe',
email: '[email protected]',
phone: '(408)-897-5684',
credit: 1000
};

请注意,BusinessPartnerIdentity 都具有相同类型的 name 属性。

类型的顺序

当类型相交时,类型的顺序并不重要。 例如:

type typeAB = typeA & typeB;
type typeBA = typeB & typeA;

在此示例中,typeAB 和 typeBA 具有相同的属性。

概括

  • 交集类型组合两个或多个类型以创建具有现有类型的所有属性的新类型。
  • 组合类型时,类型顺序并不重要。