Tüm durumları kapsayan switch'ler ve never denetimleri
Switch ile tüm birleşim durumlarını kapsayın ve never kullanarak eksik durumları yakalayın; güvenli bir assertNever yardımcısı oluşturun.
Tüm durumları kapsayan switch'ler ve never denetimleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 3 dersten oluşur.
Giriş
Hedef: Birleşimler üzerinde eksiksiz switch ifadeleri kullanın ve derleme zamanında eksik durumları yakalamak için never kullanın.
Eksiksiz switch
Ayrıştırılmış birleşimler ortak bir kind alanı kullanır. Bu alan üzerindeki bir switch, her durumu güvenli biçimde daraltır.
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
}
}Birleşimler büyüdüğünde
Yeni bir üye (örneğin üçgen) eklendiğinde, atlanan durumun sessizce hataya dönüşmemesi için bunu never ile yakalarız.
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
assertNever parametresi never türünde olmalıdır; böylece yeni bir varyant varsayılan duruma düşerse derleme hatası verir.
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
}
}Değişmez değer birleşimleri
Aynı kalıp dize değişmezi birleşimleri için de geçerlidir: olası her değeri kapsayın ve varsayılan durumda assertNever çağırın.
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İpuçları
İpuçları: noFallthroughCasesInSwitch özelliğini etkinleştirin; ayrıştırılmış birleşimleri tercih edin; varsayılan durumu yalnızca assertNever için kullanın.
// Tips
// - Enable noFallthroughCasesInSwitch in tsconfig for safer switches
// - Prefer discriminated unions over boolean flags
// - Keep default branch only to call assertNever; avoid swallowing casesassertNever denetimi
Hızlı denetim: Eksiksiz bir switch ifadesinde assertNever ne amaçla kullanılır?
Özet
Özet: Ayrıştırılmış birleşimler + eksiksiz switch = daha güvenli kod. never ve assertNever, derleme sırasında atlanan durumları yakalar.
Sıkça Sorulan Sorular
“Tüm durumları kapsayan switch'ler ve never denetimleri” dersi ücretsiz mi?
Evet — “Tüm durumları kapsayan switch'ler ve never denetimleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 3 dersten oluşur.
“Tüm durumları kapsayan switch'ler ve never denetimleri” dersinde ne öğreneceğim?
Switch ile tüm birleşim durumlarını kapsayın ve never kullanarak eksik durumları yakalayın; güvenli bir assertNever yardımcısı oluşturun. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.
“Tüm durumları kapsayan switch'ler ve never denetimleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Tüm durumları kapsayan switch'ler ve never denetimleri
- Koşul işlevleri ve satisfies işleci
- Fonksiyon sınırları boyunca birleşimleri iyileştirme