O never é o garçom que confere a comanda
Um truque curto de TypeScript pra nenhum pedido novo sair da cozinha sem tratamento.
![]()
Você tem um tipo com várias variantes e um switch que trata cada uma. Tudo funciona. Seis meses depois, alguém adiciona uma variante nova e esquece do switch. O código compila, e o bug aparece em produção.
O tipo never resolve isso. Ele representa um valor que não pode existir.
type Pedido = { tipo: 'cafe' } | { tipo: 'pastel'; recheio: string };
function preparar(pedido: Pedido): string {
switch (pedido.tipo) {
case 'cafe':
return 'passando um café';
case 'pastel':
return `fritando pastel de ${pedido.recheio}`;
default: {
const faltouTratar: never = pedido;
throw new Error(`Pedido desconhecido: ${JSON.stringify(faltouTratar)}`);
}
}
}
Depois dos dois case, o TypeScript sabe que não sobrou nenhuma variante. Por isso pedido cabe em never.
Agora adicione { tipo: 'torresmo' } ao tipo Pedido. A linha do default para de compilar, porque sobrou um pedido sem tratamento. O erro aparece no editor, e não na mão do cliente.