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 | TriangleassertNever
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 careWskazó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 casesSprawdzanie 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
- Kompletne instrukcje switch i sprawdzanie never
- Funkcje predykatów i operator satisfies
- Doprecyzowywanie unii między granicami funkcji