====Тип пересечения==== Тип пересечения создает новый тип путем объединения нескольких существующих типов. Новый тип имеет все особенности существующих типов. Чтобы объединить типы, вы используете оператор & следующим образом: type typeAB = typeA & typeB; Тип AB будет иметь все свойства как из типа A, так и из типа B. Обратите внимание, что тип объединения использует **|** оператор, определяющий переменную, которая может содержать значение типа A или типа B 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 имеют имя свойства одного типа. Если их нет, то у вас будет ошибка. ====Type Order==== Когда вы пересекаете типы, порядок типов не имеет значения. Например: type typeAB = typeA & typeB; type typeBA = typeB & typeA; В этом примере typeAB и typeBA имеют одинаковые свойства.