> Что происходит при объединении полей с конкретными значениями в TypeScript? (TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Инрэко

Стек: TypeScript

> Пример ответа

В TypeScript объединение полей с конкретными значениями (литеральными типами) создаёт дискриминирующее объединение (discriminated union). Это позволяет сужать тип при проверке общего поля-дискриминатора.

Пример:

TYPESCRIPT
type 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).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью