Uniões discriminadas e exaustividade
Pergunta
O que é uma união discriminada em TypeScript e como você garante que um `switch` sobre ela trate todos os casos?
Resposta esperada
Uma união discriminada é um `type` que combina variantes, cada uma com uma propriedade literal comum (a 'tag'/'discriminante') que o compilador usa pra estreitar: `type Evento = { tipo: 'click'; x: number } | { tipo: 'scroll'; delta: number }`. Num `switch (e.tipo)`, dentro de `case 'click'` o TS sabe que `e` tem `x`. Pra garantir exaustividade — que adicionar uma variante nova sem tratá-la vire erro de compilação — você põe um `default` que atribui a variável a uma constante `never`: `const _exhaustive: never = e;`. Se sobra alguma variante não tratada, ela não é `never`, e o compilador reclama exatamente ali. É o jeito de fazer o sistema de tipos te lembrar de todos os pontos que precisam mudar quando o modelo cresce.
Por que perguntam isso
Pergunta pleno/sênior de TS. O truque do `never` no default é o teste. Conecta com a pergunta de `never`.