TypeScriptTingkat: Lanjutan7 min
Discriminated Unions & Pengecekan Exhaustive (never)
Rancang penanganan status yang anti-bug dengan Discriminated Unions dan teknik pemeriksaan menyeluruh (exhaustive check) menggunakan tipe never.
Pola Tagged / Discriminated Union
Pratinjau TerbukaDengan memberikan properti pengenal bersama (discriminant tag), TypeScript dapat mempersempit (narrow down) tipe secara akurat dalam percabangan switch-case.
Contoh Kode Sintaks
interface StatusSukses {
status: 'sukses';
data: { id: number; nama: string };
}
interface StatusGagal {
status: 'gagal';
pesanError: string;
}
interface StatusLoading {
status: 'loading';
}
type ResponAPI = StatusSukses | StatusGagal | StatusLoading;
function tanganiRespon(res: ResponAPI) {
switch (res.status) {
case 'sukses':
return `Data: ${res.data.nama}`;
case 'gagal':
return `Error: ${res.pesanError}`;
case 'loading':
return "Memuat data...";
default:
// Exhaustive check: memicu compile error jika ada status baru yang terlewat
const _unreachable: never = res;
throw new Error(`Status tidak dikenal: ${_unreachable}`);
}
}Live Compiler Runner
Akses Kursus Wajib Login
Buka Akses Penuh Silabus & Praktikum
Masuk dengan akun GitHub, Google, atau Akses Cepat Developer untuk membuka seluruh materi mendalam, menjalankan compiler interaktif, mengerjakan kuis, dan menyimpan progres belajar Anda.
145+ Modul Lengkap•Tersimpan Otomatis•Sertifikat Kelulusan Resmi