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 Terbuka

Dengan 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