Utility Type: Exclude
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah membaca halaman ini, kamu diharapkan dapat:
- Menjelaskan fungsi dari Utility Type
Exclude<T, U>. - Menggunakan
Excludeuntuk menyaring tipe union. - Membedakan penggunaan
Omit(untuk objek) danExclude(untuk union).
Pendahuluan
Section titled “Pendahuluan”Jika Omit digunakan untuk membuang properti dari sebuah objek, bagaimana cara kita membuang anggota dari sebuah tipe union?
Contoh: Kita memiliki tipe union Hari berisi "Senin" sampai "Minggu". Kita ingin membuat tipe baru HariKerja dengan membuang "Sabtu" dan "Minggu" dari tipe union tersebut. Kita menggunakan Exclude.
Penjelasan Materi: Cara Kerja Exclude
Section titled “Penjelasan Materi: Cara Kerja Exclude”Utility Type Exclude<T, U> digunakan untuk membuat tipe baru dengan membuang tipe-tipe yang ada di U dari tipe union T.
Sintaks dasar:
type TipeBaru = Exclude<TipeUnionAsal, TipeYangDibuang>;Analogi Kehidupan Sehari-hari: Menghapus Anggota dari Daftar Piket
Section titled “Analogi Kehidupan Sehari-hari: Menghapus Anggota dari Daftar Piket”Bayangkan daftar Semua Hari dalam Seminggu:
Daftar Hari: [Senin, Selasa, Rabu, Kamis, Jumat, Sabtu, Minggu]Guru ingin membuat jadwal piket kebersihan kelas. Guru berkata: “Kita piket setiap hari, kecuali hari Sabtu dan Minggu.”
Exclude<Daftar Hari, Sabtu | Minggu> = Hari-hari piket [Senin, Selasa, Rabu, Kamis, Jumat]Guru menghapus dua hari tersebut dari daftar rencana piket, sehingga tersisa 5 hari aktif belajar.
Visual Illustration: Transformasi Exclude
Section titled “Visual Illustration: Transformasi Exclude”Tipe Asli: "A" | "B" | "C" │ ▼ Diproses Exclude<T, "C">Tipe Baru: "A" | "B"Mari Mencoba: Memisahkan Jurusan Non-Teknis
Section titled “Mari Mencoba: Memisahkan Jurusan Non-Teknis”Mari kita buat program penyaringan tipe union jurusan sekolah menggunakan Exclude.
Buat file bernama src/bab9/exclude-utility.ts:
// Tipe union semua jurusan di sekolahtype SemuaJurusan = "RPL" | "TKJ" | "DKV" | "Akuntansi" | "Pemasaran";
// Menyaring jurusan non-teknik dengan membuang Akuntansi & Pemasarantype JurusanTeknik = Exclude<SemuaJurusan, "Akuntansi" | "Pemasaran">;
let pilihanKu: JurusanTeknik;pilihanKu = "RPL"; // ✓ ValidpilihanKu = "DKV"; // ✓ Valid
console.log("Pilihan Jurusan:", pilihanKu);
// Coba lakukan ini (Error!)// pilihanKu = "Akuntansi"; // ✗ Error!// Type '"Akuntansi"' is not assignable to type 'JurusanTeknik'.Jalankan dengan perintah:
tsx src/bab9/exclude-utility.tsOutput
Section titled “Output”Pilihan Jurusan: RPLPenjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”Exclude<SemuaJurusan, "Akuntansi" | "Pemasaran">— Membuang"Akuntansi"dan"Pemasaran"dari tipe unionSemuaJurusan, menghasilkan tipe baru"RPL" | "TKJ" | "DKV".- Variabel
pilihanKudivalidasi ketat agar hanya menerima jurusan teknik sisa hasil penyaringan tersebut.
Omit vs Exclude: Perbedaan Penting
Section titled “Omit vs Exclude: Perbedaan Penting”Pemula sering tertukar antara Omit dan Exclude. Perbedaan dasarnya sangat jelas:
Omitmembuang properti (key) dari sebuah tipe Objek ({ nama: string }).Excludemembuang anggota dari sebuah tipe Union ("A" | "B" | "C").
Latihan
Section titled “Latihan”- Buat tipe union
Status = "proses" | "selesai" | "error". - Buat tipe
StatusAmanyang membuang"error"menggunakanExclude. - Buat variabelnya dan tampilkan.
Ringkasan
Section titled “Ringkasan”Exclude<T, U>menyaring tipe unionTdengan membuang tipeU.- Digunakan khusus untuk tipe union (bukan objek).
- Mempermudah pembuatan variasi tipe pilihan berdasarkan kelompok kustom.