0Pricing
TypeScript Academy · Lekcja

Typowane klasy błędów i hierarchie

Twórz niestandardowe klasy błędów z rozróżnianymi typami.

Typowane klasy błędów i hierarchie to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Niestandardowe klasy błędów w TypeScript nadają błędom hierarchię typów, umożliwiając ich bezpieczną i uporządkowaną obsługę.

Rozszerzanie Error

Należy utworzyć bazową klasę AppError z właściwością statusCode.
class AppError extends Error {
  constructor(public message: string, public statusCode = 500) {
    super(message);
    this.name = 'AppError';
  }
}

Hierarchia błędów

Należy utworzyć typowane podklasy dla określonych typów błędów.
class NotFoundError extends AppError {
  constructor(resource: string) { super(`${resource} not found`, 404); }
}
class ValidationError extends AppError {
  constructor(public fields: string[]) { super('Validation failed', 400); }
}

Używanie instanceof

Należy używać instanceof do zawężania typów błędów w blokach 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 });
}

Rozłączna unia błędów

Należy używać rozłącznej unii do typowanej obsługi błędów.
type AppError =
  | { kind: 'not_found'; resource: string }
  | { kind: 'unauthorized' }
  | { kind: 'validation'; fields: string[] };

Fabryczne funkcje błędów

Należy utworzyć funkcje fabrykujące dla każdego typu błędu.
const errors = {
  notFound: (r: string) => new NotFoundError(r),
  unauthorized: () => new AppError('Unauthorized', 401),
};

Serializacja błędów

Należy serializować błędy na potrzeby odpowiedzi API.
function serializeError(err: AppError): Record<string, unknown> {
  return { error: err.message, code: err.statusCode, name: err.name };
}

Ustawianie this.name

Zawsze należy ustawiać this.name na nazwę klasy błędu, aby poprawnie identyfikować błędy w logach.
class MyError extends Error {
  readonly name = 'MyError' as const;
  constructor(msg: string) { super(msg); }
}

Błędy w Express

Należy używać typowanych niestandardowych błędów w obsłudze błędów 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' });
  }
});

Wzorzec rejestrowania błędów

Należy rejestrować błędy wraz z ich typem i komunikatem, aby zapewnić obserwowalność.
function logError(err: unknown): void {
  if (err instanceof Error) console.error(`[${err.name}] ${err.message}`);
  else console.error('Unknown error:', err);
}

Testowanie typów błędów

Należy testować, czy funkcje zgłaszają właściwe typy błędów.
test('throws NotFoundError for missing user', async () => {
  await expect(getUser(999)).rejects.toThrow(NotFoundError);
});

Szybki sprawdzian

Które słowo kluczowe TypeScript służy do sprawdzania w czasie działania, czy obiekt jest instancją klasy?

Podsumowanie

Typowane klasy i hierarchie błędów: poznano kluczowe pojęcia tego tematu oraz sposoby stosowania ich w rzeczywistych projektach TypeScript.

Często zadawane pytania

Czy lekcja „Typowane klasy błędów i hierarchie” jest bezpłatna?

Tak — pełny tekst „Typowane klasy błędów i hierarchie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Typowane klasy błędów i hierarchie”?

Twórz niestandardowe klasy błędów z rozróżnianymi typami. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Typowane klasy błędów i hierarchie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Typowane klasy błędów i hierarchie
  2. Wzorzec Result: Ok i Err
  3. Zawężanie przechwyconych błędów (unknown a Error)
  4. Obsługa błędów w asynchronicznym kodzie TypeScript
← Powrót do TypeScript Academy