TypeScript · Intermediário · Português · Técnico
operador in
A expressão 'chave' in objeto também age como type guard: no ramo verdadeiro, o tipo é estreitado para os membros da união que possuem aquela propriedade.
Onde usar
Útil para distinguir membros de uma união sem propriedade discriminante, como Gato | Cachorro, em que só um deles tem miar. Em code review, às vezes se pede um campo kind explícito no lugar.
Em código
type Gato = { miar(): void };
type Cao = { latir(): void };
function fala(a: Gato | Cao) {
if ('miar' in a) a.miar();
else a.latir();
}Exemplos
Usei o operador in para separar o gato do cachorro na união.
O operador in estreita o tipo só para quem tem a propriedade miar.
Cuidado
O in testa a presença da chave, não o valor: não serve para distinguir tipos que têm a mesma propriedade, mesmo com valores diferentes.
Sinônimos
narrowing com in