Typescript. Сужения типов

Typescript. Сужения типов

Сужения типов в 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 Сужения типов, запомним что этот механизм даёт возможность путём анализа различных условий обращаться к определённым свойствам.