ExpertiDict

TypeScript · Intermediário · Português · Técnico

operador in

/opeɾaˈdoɾ ˈĩ/operador

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

Veja também

Todos os termos de TypeScript