TypeScript Academy · Lektion

Typade felklasser och hierarkier

Skapa anpassade felklasser med diskriminerade typer

Lektion 1 av 413 steg

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

Anpassade felklasser i TypeScript ger fel en typhierarki för säker och strukturerad hantering.

Utöka Error

Skapa en basklass AppError med en statusCode.
class AppError extends Error {
  constructor(public message: string, public statusCode = 500) {
    super(message);
    this.name = 'AppError';
  }
}

Felhierarki

Skapa typbestämda underklasser för specifika feltyper.
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

Använd instanceof för att begränsa feltyper i catch-block.
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

Använd en diskriminerad union för typbestämd felhantering.
type AppError =
  | { kind: 'not_found'; resource: string }
  | { kind: 'unauthorized' }
  | { kind: 'validation'; fields: string[] };

Fabriksfunktioner för fel

Skapa fabriksfunktioner för varje feltyp.
const errors = {
  notFound: (r: string) => new NotFoundError(r),
  unauthorized: () => new AppError('Unauthorized', 401),
};

Serialisering av fel

Serialisera fel för API-svar.
function serializeError(err: AppError): Record<string, unknown> {
  return { error: err.message, code: err.statusCode, name: err.name };
}

Ange this.name

Ange alltid this.name till felklassens namn för korrekt identifiering av fel i loggar.
class MyError extends Error {
  readonly name = 'MyError' as const;
  constructor(msg: string) { super(msg); }
}

Fel i Express

Använd typbestämda anpassade fel i Express-felhanterare.
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

Logga fel med deras typ och meddelande för observerbarhet.
function logError(err: unknown): void {
  if (err instanceof Error) console.error(`[${err.name}] ${err.message}`);
  else console.error('Unknown error:', err);
}

Testa feltyper

Testa att funktioner kastar rätt feltyper.
test('throws NotFoundError for missing user', async () => {
  await expect(getUser(999)).rejects.toThrow(NotFoundError);
});

Snabbkontroll

Vilket TypeScript-nyckelord kontrollerar vid körning om ett objekt är en instans av en klass?

Sammanfattning

Typbestämda felklasser och hierarkier: ni har lärt er de viktigaste koncepten inom området och hur de tillämpas i riktiga TypeScript-projekt.
Gratis att börja

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

  1. Typade felklasser och hierarkier
  2. Result-mönstret: Ok och Err
  3. Begränsa fångade fel (unknown eller Error)
  4. Felhantering i asynkron TypeScript-kod
← Tillbaka till TypeScript Academy