> Что такое объединение и пересечение типов в TypeScript (TypeScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Инрэко, ООО Премиум ИТ Солюшен, SmartWay
Стек: TypeScript
> Пример ответа
Короткий ответ
Объединение типов (union types) в TypeScript - это тип, который может быть одним из нескольких указанных типов, записывается через |. Пересечение типов (intersection types) - это тип, который включает все свойства из всех указанных типов, записывается через &. Union позволяет выбрать один вариант, intersection объединяет несколько типов в один.
Подробное объяснение
Union types (|) позволяют переменной принимать значения разных типов. Например, string | number означает, что значение может быть строкой или числом. TypeScript сужает union до конкретного типа через type guards, чтобы обеспечить безопасный доступ к свойствам.
Intersection types (&) объединяют несколько типов в один, требуя наличия всех свойств из каждого типа. Например, A & B означает, что объект должен иметь все свойства из A и все из B. Это полезно для комбинирования интерфейсов или типов.
Ключевое различие: union - "или", intersection - "и". Union расширяет возможные значения, intersection сужает их, добавляя требования.
На практике
Union types часто используются для параметров функций, которые могут принимать разные форматы данных, или для обработки состояний (например, loading | success | error). Intersection types применяются при миксинах, комбинировании конфигураций или расширении существующих типов без наследования.
Важно помнить, что intersection с примитивами (например, string & number) даёт never, так как значение не может быть одновременно строкой и числом.
Пример кода
TYPESCRIPT// Union typetype Status = 'loading' | 'success' | 'error';function handleStatus(status: Status) {if (status === 'loading') {console.log('Загрузка...');}}// Intersection typeinterface HasName {name: string;}interface HasAge {age: number;}type Person = HasName & HasAge;const person: Person = { name: 'Анна', age: 25 }; // обязательно оба поля
Как отвечать на собеседовании
Начни с краткого определения union и intersection, затем приведи простой пример. Подчеркни разницу: union - выбор одного из вариантов, intersection - объединение требований. Упомяни практическое применение: union для состояний и опциональных типов, intersection для комбинирования интерфейсов. Если спросят про сложные случаи, скажи, что intersection с примитивами даёт never.
Что проверяет интервьюер
Интервьюер оценивает понимание базовых концепций системы типов TypeScript: как работают union и intersection, их синтаксис и различия. Важно показать, что ты понимаешь, когда какой тип использовать, и как TypeScript обрабатывает сужение типов для union.
Типичные ошибки
- Путать union и intersection: думать, что
|объединяет свойства, а&выбирает одно из значений. - Использовать intersection для примитивов (
string & number), не понимая, что этоnever. - Забывать про type guards для union types, что приводит к ошибкам доступа к несуществующим свойствам.
- Считать, что intersection создаёт новый тип с уникальными свойствами, а не требует все из исходных типов.
> Похожие задачи по frontend
Что такое utility types в TypeScript, например Partial и DeepPartial
Что такое enum в TypeScript
Что такое декораторы в TypeScript и для чего они используются
Что такое keyof в TypeScript и для чего он используется
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью