Сужения типов в Typescript позволяют уточнить логику поведения кода что влечёт за собой преимущество в повышении удобства контроля и поддержки кодовой базы.
Большая часть сужений происходит в булевых if.
let t: string | number = getRandomVal()if (typeof t === 'string') { t.toUpperCase()}let t1: number | number[] = getRandomVal()if (Array.isArray(t1)) { t1.length}Но так же может часто применяться и в разграниченных объединениях (discriminated unions), хранителях типов (к примеру instanceof) и т.д.
type Responses = | { s: 200, data: any } | { s: 301, to: string } | { s: 400, error: Error }const r: Responses = getRandomVal()switch (r.s) { case 200: r.data case 301: r.to ...}Итого
Рассмотрели и получили общее понимание базовой и мощной фичи Typescript Сужения типов, запомним что этот механизм даёт возможность путём анализа различных условий обращаться к определённым свойствам.
