В этом уроке вы узнаете о пересечении типов в 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 объединяет два или более типов для создания нового типа, обладающего всеми свойствами существующих типов.
- Порядок типов не важен при комбинировании типов.
