0Pricing
TypeScript Academy · Pelajaran

Pemeriksaan Kelengkapan dengan never

Gunakan never untuk memastikan semua kasus union ditangani.

Pemeriksaan Kelengkapan dengan never adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. 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 4 pelajaran total.

Selamat Datang

Pemeriksaan kelengkapan menggunakan tipe `never` untuk memastikan setiap kasus dalam gabungan ditangani. Saat Anda menambahkan anggota gabungan baru, TypeScript akan memberi tahu Anda dengan tepat di mana kode perlu diperbarui.

Masalah Kelengkapan Kasus

Saat Anda menggunakan switch pada tipe gabungan dan melupakan suatu kasus, JavaScript akan melewatinya secara diam-diam. TypeScript dapat mendeteksinya dengan pemeriksaan never.
type Shape = 'circle' | 'square';
function area(s: Shape): number {
  if (s === 'circle') return 3.14;
  if (s === 'square') return 1;
  // What if we add 'triangle'?
}

Pola Kelengkapan never

Tetapkan nilai yang tersisa ke `never`. Jika TypeScript menyimpulkan tipe yang bukan never, berarti ada kasus yang belum ditangani.
function assertNever(x: never): never {
  throw new Error('Unexpected value: ' + x);
}
function area(s: Shape): number {
  switch (s) {
    case 'circle': return 3.14;
    case 'square': return 1;
    default: return assertNever(s);
  }
}

Menambahkan Anggota Tipe Gabungan

Jika Anda menambahkan 'triangle' ke tipe gabungan Shape, TypeScript akan melaporkan kesalahan pada `assertNever(s)` dan meminta Anda menangani kasus baru tersebut.
type Shape = 'circle' | 'square' | 'triangle';
// Now TypeScript errors on assertNever(s) because s is 'triangle'
// — it's not never!

Pemeriksaan never Sebaris

Anda dapat melakukan pemeriksaan kelengkapan secara sebaris tanpa fungsi pembantu.
function handle(shape: Shape): string {
  switch (shape.kind) {
    case 'circle': return 'circle';
    case 'square': return 'square';
    default:
      const _: never = shape; // Error if not exhaustive
      throw new Error('Unknown shape');
  }
}

Kelengkapan Tanpa switch

Gunakan teknik yang sama dalam rangkaian if/else.
function process(action: Action): void {
  if (action.type === 'A') { /* ... */ }
  else if (action.type === 'B') { /* ... */ }
  else {
    const _: never = action; // exhaustive
  }
}

never dalam Batasan Tipe Generik

never adalah tipe paling bawah dan berguna dalam tipe kondisional untuk merepresentasikan cabang yang mustahil.
type NonNullable<T> = T extends null | undefined ? never : T;
// Removes null and undefined from T

Menggunakan never untuk Keadaan yang Mustahil

Kata kunci never berguna untuk memodelkan keadaan yang seharusnya mustahil dalam sistem tipe Anda.
type State<T> =
  | { kind: 'loading' }
  | { kind: 'success'; data: T }
  | { kind: 'error'; msg: string };
// There should never be a state with kind: 'unknown'

never dalam Tipe Kondisional

never digunakan dalam tipe kondisional untuk menyaring anggota tipe yang tidak diinginkan.
type NonFunctions<T> = {
  [K in keyof T]: T[K] extends Function ? never : K
}[keyof T];
// Returns keys whose values are not functions

never Merambat melalui Tipe Gabungan

never merupakan elemen identitas untuk tipe gabungan — T | never = T.
type T = string | never; // string
type U = never | number | never; // number

Pembantu assertNever

Utilitas assertNever sederhana adalah sesuatu yang sebaiknya dimiliki setiap proyek TypeScript untuk pemeriksaan kelengkapan.
function assertNever(value: never, message?: string): never {
  throw new Error(message ?? `Unhandled: ${JSON.stringify(value)}`);
}

Pemeriksaan Singkat

Apa yang terjadi pada baris `default: assertNever(s)` jika `s` masih memiliki tipe yang mungkin tetapi belum ditangani?

Rangkuman

Gunakan assertNever(x: never) dalam kasus default switch untuk memperoleh kesalahan kompilasi saat anggota tipe gabungan belum ditangani. Dengan demikian, kode Anda tetap benar seiring tipe gabungan berkembang.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemeriksaan Kelengkapan dengan never” gratis?

Ya — teks lengkap “Pemeriksaan Kelengkapan dengan 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 4 pelajaran total.

Apa yang akan aku pelajari di “Pemeriksaan Kelengkapan dengan never”?

Gunakan never untuk memastikan semua kasus union ditangani. 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 4 dari 4.

Berapa lama pelajaran “Pemeriksaan Kelengkapan dengan 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

  1. Penyempitan dengan typeof dan Kebenaran
  2. Penyempitan dengan instanceof dan in
  3. Fungsi Penjaga Tipe Buatan Pengguna
  4. Pemeriksaan Kelengkapan dengan never
← Kembali ke TypeScript Academy