Сужение типов TypeScript
Интерактивное демо «Сужение типов TypeScript».
Сужение типов (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 включает все варианты — не все поля общие.