TypeScript · Essencial · Inglês · Técnico
narrowing
Refinamento do tipo de uma variável dentro de um trecho de código, a partir de verificações como typeof, instanceof, igualdade ou truthiness que o compilador reconhece.
Onde usar
É o que torna as uniões utilizáveis: depois de if (typeof x === 'string'), x passa a ser string naquele bloco. Em code review aparece como 'faça o narrowing antes de acessar'.
Em código
function mostrar(v: string | number | null) {
if (v === null) return 'vazio';
if (typeof v === 'string') return v.trim();
return v.toFixed(2); // aqui v: number
}Exemplos
You need to do narrowing before calling toFixed.
Você precisa fazer o narrowing antes de chamar toFixed.
After the null check, narrowing makes it a plain string.
Depois da checagem de null, o narrowing transforma em string simples.
Cuidado
Não confunda com type assertion: o narrowing é provado pelo fluxo do código, enquanto o as apenas afirma ao compilador algo que ele não verificou.
Sinônimos
estreitamento de tipos, refinamento de tipos
Antônimos
widening