Play IT

Сужение типов TypeScript

Интерактивное демо «Сужение типов TypeScript».

languagesencyclopedia

Сужение типов (narrowing)

После проверки компилятор знает, какая ветка union активна

function fmt(v: string | number) {
  if (typeof v === "string") {
    return v.toUpperCase();
  }
  return v.toFixed(2);
}
Тип переменной
string | number
v.toUpperCase() v.toFixed(2) — ошибка до narrowing

До проверки union включает все варианты — не все поля общие.