foundation
Union, intersection и literal types
Моделируйте альтернативы, композицию, exact values, конечные состояния и string/numeric domains.
Union types моделируют альтернативы: значение должно подходить хотя бы одному члену. Intersection types объединяют требования нескольких типов. Literal types ограничивают значения exact strings, numbers, booleans или enums.
type Status = 'idle' | 'loading' | 'done';
type Admin = User & { role: 'admin' };
Потребителям нужен narrowing перед branch-specific access. Intersection несовместимых свойств может схлопнуться в `never`. Широкий `string` теряет literal information без `as const` или `satisfies`.
На интервью: объясните finite domains для statuses и commands и почему unions безопаснее множества optional полей.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и безопасностью или expressiveness и maintainability. Чеклист:
- Unions для альтернатив.
- Intersections для объединённых контрактов.
- Сохраняйте literals намеренно.
- Narrowing перед access.