ExpertiDict

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

discriminated union

/dɪˈskɹɪmɪˌneɪtɪd ˈjunjən/substantivo

União de tipos de objeto que compartilham uma propriedade literal em comum, a discriminante, como kind ou type. Checar essa propriedade estreita a união para um único membro.

Onde usar

Padrão central para modelar estados e eventos, como carregando, sucesso e erro, ou ações do Redux. Cada caso carrega só os campos que fazem sentido, e um switch cobre todos.

Em código

type Estado =
  | { tipo: 'ok'; dados: string[] }
  | { tipo: 'erro'; mensagem: string };
function texto(e: Estado) {
  if (e.tipo === 'ok') return e.dados.join();
  return e.mensagem;
}

Exemplos

Model the request state as a discriminated union.

Modele o estado da requisição como uma discriminated union.

Switch on the kind field and each branch gets its own shape.

Faça switch no campo kind e cada ramo recebe o seu formato.

Cuidado

A propriedade discriminante precisa ter tipo literal em todos os membros; se for um string solto, o narrowing por ela não funciona.

Sinônimos

tagged union, união discriminada

Veja também

Todos os termos de TypeScript