В этом уроке вы узнаете о пересечении типов в TypeScript. Пересечение типов создает новый тип путем объединения нескольких существующих типов. Новый тип имеет все особенности существующих типов.
Чтобы объединить типы, вы используете оператор &
следующим образом:
type typeAB = typeA & typeB;
typeAB
будет иметь все свойства как из typeA
, так и typeB
.
Обратите внимание, что тип union использует оператор |
, который определяет переменную, которая может содержать значение либо typeA
, либо typeB
let varName = typeA | typeB; // union type
Предположим, что у вас есть три интерфейса: BusinessPartner
, Identity
и Contact
.
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
содержит все свойства типа Identity
и Contact
:
type Employee = Identity & Contact; let e: Employee = { id: 100, name: 'John Doe', email: 'john.doe@example.com', phone: '(408)-897-5684' };
А тип Customer
содержит все свойства типа BusinessPartner
и Contact
:
type Customer = BusinessPartner & Contact; let c: Customer = { name: 'ABC Inc.', credit: 1000000, email: 'sales@abcinc.com', phone: '(408)-897-5735' };
Позже, если вы хотите реализовать продажи сотрудникам, вы можете создать новый тип пересечения, который содержит все свойства типов Identity
, Contact
и BusinessPartner
:
type Employee = Identity & BusinessPartner & Contact; let e: Employee = { id: 100, name: 'John Doe', email: 'john.doe@example.com', phone: '(408)-897-5684', credit: 1000 };
Обратите внимание, что и BusinessPartner
, и Identity
имеют свойство name
одного и того же типа. Если их нет, то у вас будет ошибка.
Порядок типов
Когда вы пересекаете типы, порядок типов не имеет значения. Например:
type typeAB = typeA & typeB; type typeBA = typeB & typeA;
В этом примере typeAB
и typeBA
имеют одинаковые свойства.
- Пересечение типов в TypeScript объединяет два или более типов для создания нового типа, обладающего всеми свойствами существующих типов.
- Порядок типов не важен при комбинировании типов.