Kelengkapan dengan never (pengantar)
Gunakan never untuk memastikan switch pada union mencakup semua kemungkinan dan menemukan kasus yang terlewat lebih awal.
Kelengkapan dengan never (pengantar) adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.
Pengantar
Tujuan: Pastikan pernyataan pemilih Anda menangani semua anggota gabungan. Tipe mustahil membantu kompiler memberi tahu Anda ketika ada kasus baru yang belum ditangani.
Menyiapkan gabungan
Buat gabungan berdiskriminan dengan penanda literal, misalnya kind, yang dapat digunakan untuk percabangan nanti.
type Circle = { kind: "circle"; radius: number };
type Square = { kind: "square"; size: number };
type Shape = Circle | Square;Pernyataan pemilih yang tidak mencakup semua kasus
Cabang yang hilang tetap berhasil dikompilasi, tetapi logikanya belum lengkap. Kita memerlukan cara untuk memaksa kegagalan saat kompilasi ketika suatu kasus belum ditangani.
function areaBad(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
// OOPS: forgot "square" -> no compile error yet
}
return 0; // silently wrong
}
console.log(areaBad({ kind: "circle", radius: 2 }));Pembantu assertNever
Tentukan assertNever: fungsi ini hanya menerima never. Jika sebuah nilai mencapainya, berarti pernyataan pemilih belum mencakup semua kasus dan kompiler akan menandainya.
function assertNever(x: never): never {
throw new Error("Unhandled case: " + JSON.stringify(x));
}Pernyataan pemilih lengkap
Tambahkan cabang bawaan yang memanggil assertNever. Ketika anggota gabungan baru muncul, kompiler memaksa Anda untuk menanganinya.
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius ** 2;
case "square":
return s.size * s.size;
default:
return assertNever(s); // compiler error if a member is unhandled
}
}
console.log(area({ kind: "square", size: 3 }));Panduan
Panduan:
- Gunakan diskriminan, seperti
kind, pada anggota gabungan. - Pertahankan pola bawaan + assertNever.
- Utamakan tipe pengembalian yang jelas agar kasus yang hilang mudah terlihat.
Pemeriksaan kelengkapan kasus
Pemeriksaan cepat: Bagaimana cara membuat pernyataan pemilih atas gabungan berdiskriminan mencakup semua kasus?
Ringkasan
Ringkasan: never menunjukkan nilai yang mustahil. Gunakan assertNever pada cabang bawaan untuk memaksa pernyataan pemilih yang lengkap dan siap menghadapi perubahan di masa depan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Kelengkapan dengan never (pengantar)” gratis?
Ya — teks lengkap “Kelengkapan dengan never (pengantar)” 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 “Kelengkapan dengan never (pengantar)”?
Gunakan never untuk memastikan switch pada union mencakup semua kemungkinan dan menemukan kasus yang terlewat lebih awal. 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 3 dari 3.
Berapa lama pelajaran “Kelengkapan dengan never (pengantar)” 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
- typeof, kesetaraan, penyempitan berdasarkan kebenaran
- in, instanceof, union terdiskriminasi
- Kelengkapan dengan never (pengantar)