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.