0Pricing
TypeScript Academy · Aula

Classes e hierarquias de erros tipadas

Crie classes de erro personalizadas com tipos discriminados

Classes e hierarquias de erros tipadas é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 1 de 4. 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 4 aulas no total.

Boas-vindas

As classes de erro personalizadas em TypeScript dão aos erros uma hierarquia de tipos para um tratamento seguro e estruturado.

Estendendo Error

Crie uma classe AppError base com um statusCode.
class AppError extends Error {
  constructor(public message: string, public statusCode = 500) {
    super(message);
    this.name = 'AppError';
  }
}

Hierarquia de erros

Crie subclasses tipadas para tipos específicos de erro.
class NotFoundError extends AppError {
  constructor(resource: string) { super(`${resource} not found`, 404); }
}
class ValidationError extends AppError {
  constructor(public fields: string[]) { super('Validation failed', 400); }
}

Usando instanceof

Use instanceof para restringir os tipos de erro em blocos catch.
try { doSomething(); }
catch (err) {
  if (err instanceof NotFoundError) res.status(404).json({ error: err.message });
  else if (err instanceof ValidationError) res.status(400).json({ fields: err.fields });
}

União discriminada de erros

Use uma união discriminada para o tratamento tipado de erros.
type AppError =
  | { kind: 'not_found'; resource: string }
  | { kind: 'unauthorized' }
  | { kind: 'validation'; fields: string[] };

Funções de fábrica de erros

Crie funções de fábrica para cada tipo de erro.
const errors = {
  notFound: (r: string) => new NotFoundError(r),
  unauthorized: () => new AppError('Unauthorized', 401),
};

Serialização de erros

Serialize os erros para respostas da API.
function serializeError(err: AppError): Record<string, unknown> {
  return { error: err.message, code: err.statusCode, name: err.name };
}

Definindo this.name

Sempre defina this.name como o nome da classe de erro para identificar corretamente os erros nos registros.
class MyError extends Error {
  readonly name = 'MyError' as const;
  constructor(msg: string) { super(msg); }
}

Erros no Express

Use erros personalizados tipados nos manipuladores de erros do Express.
app.use((err: unknown, req: Request, res: Response, next: NextFunction) => {
  if (err instanceof AppError) {
    res.status(err.statusCode).json({ error: err.message });
  } else {
    res.status(500).json({ error: 'Internal error' });
  }
});

Padrão de registro de erros

Registre os erros com seu tipo e sua mensagem para facilitar o monitoramento.
function logError(err: unknown): void {
  if (err instanceof Error) console.error(`[${err.name}] ${err.message}`);
  else console.error('Unknown error:', err);
}

Testes de tipos de erro

Teste se as funções lançam os tipos corretos de erro.
test('throws NotFoundError for missing user', async () => {
  await expect(getUser(999)).rejects.toThrow(NotFoundError);
});

Verificação rápida

Qual palavra-chave do TypeScript verifica se um objeto é uma instância de uma classe em tempo de execução?

Recapitulação

Classes e hierarquias de erros tipadas: você aprendeu os principais conceitos deste tópico e como aplicá-los em projetos reais de TypeScript.

Perguntas Frequentes

A aula “Classes e hierarquias de erros tipadas” é grátis?

Sim — o texto completo de “Classes e hierarquias de erros tipadas” é 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 4 aulas no total.

O que vou aprender em “Classes e hierarquias de erros tipadas”?

Crie classes de erro personalizadas com tipos discriminados 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 1 de 4.

Quanto tempo leva a aula “Classes e hierarquias de erros tipadas”?

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. Classes e hierarquias de erros tipadas
  2. O padrão Result: Ok e Err
  3. Restringindo erros capturados (unknown versus Error)
  4. Tratamento de erros em código TypeScript assíncrono
← Voltar para TypeScript Academy