TypeScript · Intermediário · Inglês · Técnico
discriminated union
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