PassFront
  1. PassFront
  2. База знаний
  3. Type Narrowing и Guards

Что такое сужение типов (type narrowing) в TypeScript?

Type Narrowing и Guards

Сужение типов — процесс, при котором TypeScript уточняет тип переменной внутри ветки кода на основе проверок.

Способы сужения

  • typeof: typeof x === 'string'.
  • Проверка на null и undefined: if (x != null).
  • instanceof для классов.
  • in: 'name' in obj.
  • Проверка равенства и truthiness.
  • Дискриминантное поле у объединения типов.
function format(value: string | number | null) {
  if (value === null) return '—';
  if (typeof value === 'string') return value.toUpperCase(); // string
  return value.toFixed(2);                                    // number
}

Зачем

Без сужения методы, доступные не всем членам union, вызывать нельзя: TypeScript покажет ошибку. Проверка в коде одновременно защищает от ошибок во время выполнения.

Коротко для собеседования

TypeScript отслеживает проверки и сужает тип в ветках. Основные инструменты: typeof, instanceof, in, сравнение с null и проверка дискриминанта.

Другие вопросы раздела