Switch lengkap & pemeriksaan never
Tulis union lengkap dengan switch dan temukan kasus yang hilang menggunakan never; buat pembantu assertNever yang aman.
Switch lengkap & pemeriksaan never adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 3 pelajaran total.
Pendahuluan
Tujuan: Buat switch menyeluruh atas gabungan dan gunakan never untuk menemukan kasus yang terlewat saat kompilasi.
Switch menyeluruh
Gabungan terdiskriminasi menggunakan bidang umum kind. Pernyataan switch pada bidang tersebut mempersempit setiap kasus dengan aman.
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
}
}Saat gabungan bertambah
Saat anggota baru (misalnya triangle) ditambahkan, kita akan menemukannya dengan never agar kasus yang terlewat tidak diam-diam menghasilkan kesalahan.
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
Parameter assertNever harus bertipe never, sehingga jika varian baru masuk ke default, kompilasi akan menghasilkan kesalahan.
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
}
}Gabungan literal
Pola yang sama berlaku untuk gabungan literal string: cakup setiap nilai yang mungkin, lalu panggil assertNever pada 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 careKiat
Kiat: Aktifkan noFallthroughCasesInSwitch; utamakan gabungan terdiskriminasi; gunakan default hanya untuk assertNever.
// Tips
// - Enable noFallthroughCasesInSwitch in tsconfig for safer switches
// - Prefer discriminated unions over boolean flags
// - Keep default branch only to call assertNever; avoid swallowing casesPemeriksaan assertNever
Pemeriksaan singkat: Apa tujuan assertNever dalam switch menyeluruh?
Ringkasan
Ringkasan: Gabungan terdiskriminasi + switch menyeluruh = kode yang lebih aman. never dan assertNever menemukan kasus yang terlewat saat kompilasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Switch lengkap & pemeriksaan never” gratis?
Ya — teks lengkap “Switch lengkap & pemeriksaan never” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Switch lengkap & pemeriksaan never”?
Tulis union lengkap dengan switch dan temukan kasus yang hilang menggunakan never; buat pembantu assertNever yang aman. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “Switch lengkap & pemeriksaan never” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Switch lengkap & pemeriksaan never
- Fungsi predikat & operator satisfies
- Menyempurnakan union lintas batas fungsi