TypeScript · Intermediário · Inglês · Técnico
type widening
Processo em que o compilador generaliza um tipo literal para o tipo base mais amplo, como 'a' para string, quando o valor pode mudar depois.
Onde usar
Explica por que let modo = 'claro' vira string e então não serve para um parâmetro 'claro' | 'escuro'. Em PR, a correção costuma ser const, uma anotação ou as const.
Em código
const a = 'sim'; // tipo 'sim'
let b = 'sim'; // tipo string
const o = { modo: 'sim' }; // modo: string
const o2 = { modo: 'sim' } as const;
// o2.modo é 'sim' (readonly)Exemplos
Type widening turned my literal into string.
O type widening transformou meu literal em string.
Use const to avoid type widening.
Use const para evitar o type widening.
Cuidado
Não é o mesmo que alargar com uma union: o widening acontece sozinho na inferência de let, propriedades de objeto e arrays, sem você pedir.
Sinônimos
alargamento de tipo
Antônimos
narrowing