0Pricing
TypeScript Academy · Ders

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 | Triangle

assertNever

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 cases

assertNever 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

  1. Tüm durumları kapsayan switch'ler ve never denetimleri
  2. Koşul işlevleri ve satisfies işleci
  3. Fonksiyon sınırları boyunca birleşimleri iyileştirme
← TypeScript Academy Sayfasına Dön