0Pricing
TypeScript Academy · Aula

Exaustividade com never (introdução)

Use never para impor switches exaustivos em uniões e detectar casos ausentes antecipadamente.

Exaustividade com never (introdução) é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 3 aulas no total.

Introdução

Objetivo: garantir que sua instrução de seleção trate todos os membros de uma união. O tipo de valor impossível ajuda o compilador a avisar quando falta um caso novo.

Configuração da união

Crie uma união discriminada com um rótulo literal (por exemplo, kind) para usá-lo posteriormente em uma instrução de seleção.

type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };

type Shape = Circle | Square;

Instrução de seleção não exaustiva

Uma ramificação ausente compila, mas a lógica fica incompleta. Precisamos de uma forma de forçar uma falha em tempo de compilação quando faltar um caso.

function areaBad(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius ** 2;
    // OOPS: forgot "square" -> no compile error yet
  }
  return 0; // silently wrong
}

console.log(areaBad({ kind: "circle", radius: 2 }));

Auxiliar assertNever

Defina assertNever: ele aceita apenas never. Se um valor chegar até ele, a instrução de seleção não será exaustiva e o compilador sinalizará o problema.

function assertNever(x: never): never {
  throw new Error("Unhandled case: " + JSON.stringify(x));
}

Instrução de seleção exaustiva

Adicione um ramo padrão que chame assertNever. Quando surgir um novo membro da união, o compilador exigirá que você o trate.

function area(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius ** 2;
    case "square":
      return s.size * s.size;
    default:
      return assertNever(s); // compiler error if a member is unhandled
  }
}

console.log(area({ kind: "square", size: 3 }));

Diretrizes

Diretrizes:

  • Use um discriminador (como kind) nos membros da união.
  • Mantenha o padrão padrão + assertNever.
  • Prefira tipos de retorno claros para que os casos ausentes sejam evidentes.

Verificação de exaustividade

Verificação rápida: como tornar exaustiva uma instrução de seleção sobre uma união discriminada?

Recapitulação

Recapitulação: never indica um valor impossível. Use assertNever no ramo padrão para forçar instruções de seleção completas e preparadas para o futuro.

Perguntas Frequentes

A aula “Exaustividade com never (introdução)” é grátis?

Sim — o texto completo de “Exaustividade com never (introdução)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 3 aulas no total.

O que vou aprender em “Exaustividade com never (introdução)”?

Use never para impor switches exaustivos em uniões e detectar casos ausentes antecipadamente. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar TypeScript Academy?

Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.

Quanto tempo leva a aula “Exaustividade com never (introdução)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de TypeScript Academy?

Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. typeof, igualdade e redução por veracidade
  2. in, instanceof e uniões discriminadas
  3. Exaustividade com never (introdução)
← Voltar para TypeScript Academy