👩💻 Обьединение и пересечение типов в Typescript
TypeScript предлагает мощные инструменты для работы с типами данных, такие как пересечения (&) и объединения (|). Эти операторы позволяют комбинировать типы, чтобы создавать новые типы с определенными свойствами. Давайте рассмотрим каждый из них подробнее.
Пересечение типов &
Пересечение типов объединяет два типа таким образом, что новый тип будет содержать свойства обоих исходных типов. Это полезно, когда нужно создать тип, который наследует свойства нескольких объектов.
Пример: `interface Person { name: string; }
interface Employee { id: number; }
type PersonEmployee = Person & Employee;
const personEmployee: PersonEmployee = { name: 'Иван Иванов', id: 12345, };
Здесь PersonEmployee — это тип, который содержит оба свойства: name от интерфейса Person и id от интерфейса Employee.
Объединение типов |
Объединение типов создает новый тип, который может принимать значения любого из указанных типов. Это полезно, когда переменная может иметь несколько возможных типов.
Пример: `type StringOrNumber = string | number;
let value: StringOrNumber; value = 'Привет'; // OK value = 42; // OK value = true; // Ошибка! Тип boolean не входит в StringOrNumber
Здесь StringOrNumber — это тип, который может быть либо строкой, либо числом.
Использование в практике
Эти операции часто применяются для улучшения безопасности типов и удобства разработки. Например, если у вас есть функция, принимающая параметры разных типов, вы можете использовать объединение:
function printValue(value: string | number) { console.log(Значение: ${value}`);
}
printValue('Строка'); // Выводит: Значение: Строка printValue(100); // Выводит: Значение: 100
Или если вам нужно объединить данные двух сущностей в одну, удобно использовать пересечение:
`interface UserData { username: string; email: string; }
interface AdditionalInfo { age: number; city: string; }
type FullUserProfile = UserData & AdditionalInfo;
const user: FullUserProfile = { username: 'alice', email: 'alice@example.com', age: 30, city: 'Москва' };````