> Что происходит при объединении полей с конкретными значениями в TypeScript? (TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Инрэко
Стек: TypeScript
> Пример ответа
В TypeScript объединение полей с конкретными значениями (литеральными типами) создаёт дискриминирующее объединение (discriminated union). Это позволяет сужать тип при проверке общего поля-дискриминатора.
Пример:
TYPESCRIPTtype Shape =| { kind: 'circle'; radius: number }| { kind: 'square'; side: number };function area(shape: Shape) {if (shape.kind === 'circle') {// TypeScript знает: shape - это { kind: 'circle'; radius: number }return Math.PI * shape.radius ** 2;}// shape автоматически сужается до { kind: 'square'; side: number }return shape.side ** 2;}
Ключевые моменты:
-
Поле с литеральным значением (например,
kind: 'circle') становится дискриминатором. -
TypeScript использует проверку этого поля для точного вывода типа в каждой ветке.
-
Без дискриминатора пришлось бы использовать пользовательские защитники типа (type guards) или утверждения (assertions).
Это делает код безопаснее и читаемее, особенно при работе с разными вариантами данных (например, ответы API, состояния UI).
> Похожие задачи по frontend
В чем разница между типами void и never в TypeScript
Что такое дженерики в TypeScript и для чего они используются
Как типизировать компонент и пропсы в TypeScript?
Используешь ли условные типы (conditional types) в TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью