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
Estendendo Error
class AppError extends Error {
constructor(public message: string, public statusCode = 500) {
super(message);
this.name = 'AppError';
}
}Hierarquia de erros
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
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
type AppError =
| { kind: 'not_found'; resource: string }
| { kind: 'unauthorized' }
| { kind: 'validation'; fields: string[] };Funções de fábrica de erros
const errors = {
notFound: (r: string) => new NotFoundError(r),
unauthorized: () => new AppError('Unauthorized', 401),
};Serialização de erros
function serializeError(err: AppError): Record<string, unknown> {
return { error: err.message, code: err.statusCode, name: err.name };
}Definindo this.name
class MyError extends Error {
readonly name = 'MyError' as const;
constructor(msg: string) { super(msg); }
}Erros no 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
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
test('throws NotFoundError for missing user', async () => {
await expect(getUser(999)).rejects.toThrow(NotFoundError);
});Verificação rápida
Recapitulação
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
- Classes e hierarquias de erros tipadas
- O padrão Result: Ok e Err
- Restringindo erros capturados (unknown versus Error)
- Tratamento de erros em código TypeScript assíncrono