Что такое сужение типов (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 и проверка дискриминанта.