Typade felklasser och hierarkier
Skapa anpassade felklasser med diskriminerade typer
Typade felklasser och hierarkier är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Välkommen
Utöka Error
class AppError extends Error {
constructor(public message: string, public statusCode = 500) {
super(message);
this.name = 'AppError';
}
}Felhierarki
class NotFoundError extends AppError {
constructor(resource: string) { super(`${resource} not found`, 404); }
}
class ValidationError extends AppError {
constructor(public fields: string[]) { super('Validation failed', 400); }
}Använda 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 });
}Diskriminerad felunion
type AppError =
| { kind: 'not_found'; resource: string }
| { kind: 'unauthorized' }
| { kind: 'validation'; fields: string[] };Fabriksfunktioner för fel
const errors = {
notFound: (r: string) => new NotFoundError(r),
unauthorized: () => new AppError('Unauthorized', 401),
};Serialisering av fel
function serializeError(err: AppError): Record<string, unknown> {
return { error: err.message, code: err.statusCode, name: err.name };
}Ange this.name
class MyError extends Error {
readonly name = 'MyError' as const;
constructor(msg: string) { super(msg); }
}Fel i 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' });
}
});Mönster för felloggning
function logError(err: unknown): void {
if (err instanceof Error) console.error(`[${err.name}] ${err.message}`);
else console.error('Unknown error:', err);
}Testa feltyper
test('throws NotFoundError for missing user', async () => {
await expect(getUser(999)).rejects.toThrow(NotFoundError);
});Snabbkontroll
Sammanfattning
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Typade felklasser och hierarkier” gratis?
Ja – hela texten till ”Typade felklasser och hierarkier” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Typade felklasser och hierarkier”?
Skapa anpassade felklasser med diskriminerade typer Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Typade felklasser och hierarkier”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Typade felklasser och hierarkier
- Result-mönstret: Ok och Err
- Begränsa fångade fel (unknown eller Error)
- Felhantering i asynkron TypeScript-kod