0Pricing
TypeScript Academy · Lekcja

Kompletne instrukcje switch i sprawdzanie never

Pisanie kompletnych unii za pomocą switch, wykrywanie brakujących przypadków przy użyciu never oraz tworzenie bezpiecznej funkcji pomocniczej assertNever

Kompletne instrukcje switch i sprawdzanie never to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 3. 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 3 lekcji w sumie.

Wprowadzenie

Cel: tworzyć wyczerpujące instrukcje switch dla unii i używać never, aby podczas kompilacji wykrywać brakujące przypadki.

Wyczerpująca instrukcja switch

Unie dyskryminowane używają wspólnego pola kind. Instrukcja switch oparta na tym polu bezpiecznie zawęża typ w każdym przypadku.

type Circle = { kind: "circle"; radius: number }
type Square = { kind: "square"; size: number }
type Shape = Circle | Square

function area(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius * s.radius
    case "square":
      return s.size * s.size
  }
}

Gdy unie się rozrastają

Po dodaniu nowego elementu, na przykład triangle, wykryjemy go za pomocą never, dzięki czemu pominięty przypadek nie spowoduje po cichu błędu.

type Triangle = { kind: "triangle"; base: number; height: number }
// If we extend Shape but forget to add case, we want a compile-time error
// type Shape = Circle | Square | Triangle

assertNever

Parametr funkcji assertNever musi mieć typ never, aby dodanie nowego wariantu do gałęzi default powodowało błąd kompilacji.

function assertNever(x: never): never {
  throw new Error(`Unhandled case: ${String(x)}`)
}

function areaSafe(s: Shape): number {
  switch (s.kind) {
    case "circle":
      return Math.PI * s.radius * s.radius
    case "square":
      return s.size * s.size
    default:
      return assertNever(s) // if Shape grows, compiler errors here
  }
}

Unie literałów

Ten sam wzorzec dotyczy unii literałów tekstowych: obsłuż każdą możliwą wartość i wywołaj assertNever w gałęzi default.

type Status = "idle" | "loading" | "success" | "error"

function toIcon(s: Status) {
  switch (s) {
    case "idle": return "⏸"
    case "loading": return "⏳"
    case "success": return "✅"
    case "error": return "⚠️"
    default: return assertNever(s)
  }
}

// Alternative: const check
const _check: never = ((): Status => "idle")() as never // force compile-time check with care

Wskazówki

Wskazówki: włącz noFallthroughCasesInSwitch, preferuj unie dyskryminowane, a gałąź default przeznaczaj wyłącznie dla assertNever.

// Tips
// - Enable noFallthroughCasesInSwitch in tsconfig for safer switches
// - Prefer discriminated unions over boolean flags
// - Keep default branch only to call assertNever; avoid swallowing cases

Sprawdzanie assertNever

Szybkie sprawdzenie: jaki jest cel assertNever w wyczerpującej instrukcji switch?

Podsumowanie

Podsumowanie: unie dyskryminowane i wyczerpująca instrukcja switch oznaczają bezpieczniejszy kod. never i assertNever wykrywają pominięte przypadki podczas kompilacji.

Często zadawane pytania

Czy lekcja „Kompletne instrukcje switch i sprawdzanie never” jest bezpłatna?

Tak — pełny tekst „Kompletne instrukcje switch i sprawdzanie never” 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 3 lekcji w sumie.

Co nauczysz się w „Kompletne instrukcje switch i sprawdzanie never”?

Pisanie kompletnych unii za pomocą switch, wykrywanie brakujących przypadków przy użyciu never oraz tworzenie bezpiecznej funkcji pomocniczej assertNever Ć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 3.

Ile czasu zajmuje lekcja „Kompletne instrukcje switch i sprawdzanie never”?

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. Kompletne instrukcje switch i sprawdzanie never
  2. Funkcje predykatów i operator satisfies
  3. Doprecyzowywanie unii między granicami funkcji
← Powrót do TypeScript Academy