Ringkasan BAB 9
Selamat! 🎉
Section titled “Selamat! 🎉”Kamu telah menyelesaikan BAB 9: Generic & Utility Types! Ini adalah salah satu bab yang paling menantang dan berbobot dalam pemrograman TypeScript. Dengan menguasai Generic dan Utility Types, kamu sekarang memiliki keahlian yang sejajar dengan programmer tingkat menengah (Intermediate Developer) yang siap membaca dan berkontribusi di codebase industri nyata.
Generic Cheat Sheet
Section titled “Generic Cheat Sheet”Generic Function
Section titled “Generic Function”function identity<T>(value: T): T { return value;}Generic Interface
Section titled “Generic Interface”interface Box<T> { label: string; isi: T;}Generic Constraint
Section titled “Generic Constraint”function printLength<T extends { length: number }>(item: T): void { console.log(item.length);}Utility Types Cheat Sheet
Section titled “Utility Types Cheat Sheet”| Utility Type | Sintaks | Penjelasan Singkat |
|---|---|---|
Partial<T> |
Partial<Siswa> |
Mengubah semua properti menjadi opsional (?) |
Required<T> |
Required<Siswa> |
Mengubah semua properti opsional menjadi wajib |
Readonly<T> |
Readonly<Siswa> |
Mengunci properti agar tidak bisa diubah (read-only) |
Pick<T, K> |
Pick<Siswa, "nama"> |
Membuat tipe baru dengan memilih properti tertentu saja |
Omit<T, K> |
Omit<Siswa, "nis"> |
Membuat tipe baru dengan membuang properti tertentu |
Record<K, T> |
Record<string, Siswa> |
Membuat objek pemetaan dengan key K dan value T |
Exclude<T, U> |
Exclude<Hari, "Minggu"> |
Membuang tipe U dari tipe union T |
Extract<T, U> |
Extract<Mapel, kejuruan> |
Mengambil tipe yang beririsan antara T dan U |
ReturnType<T> |
ReturnType<typeof fn> |
Mengintip tipe data hasil keluaran dari fungsi fn |
Parameters<T> |
Parameters<typeof fn> |
Mengintip tipe data input parameter dari fungsi fn |
Perbandingan Interface vs Type (Review)
Section titled “Perbandingan Interface vs Type (Review)”interface: Digunakan khusus untuk objek, mendukung pewarisan (extends), dan penggabungan deklarasi otomatis (declaration merging).type: Sangat fleksibel, mendukung union (|), intersection (&), alias tipe primitif, dan tuple.
Pertanyaan Umum Wawancara Kerja (Interview FAQ)
Section titled “Pertanyaan Umum Wawancara Kerja (Interview FAQ)”1. Apa perbedaan any dan unknown dibanding Generic?
Section titled “1. Apa perbedaan any dan unknown dibanding Generic?”anymematikan semua perlindungan tipe data (tidak aman).unknownmemaksa kita melakukan pengecekan tipe sebelum digunakan (aman tapi kaku).- Generic mempertahankan tipe data asli secara dinamis sepanjang alur input hingga output fungsi (sangat fleksibel dan aman 100%).
2. Apa perbedaan Omit dan Exclude?
Section titled “2. Apa perbedaan Omit dan Exclude?”Omitmembuang properti (key) dari sebuah tipe objek.Excludemembuang tipe dari sebuah tipe union (gabungan string/number).
Checklist Pemahaman BAB 9
Section titled “Checklist Pemahaman BAB 9”Tandai setiap poin yang sudah kamu kuasai:
- Memahami konsep parameter tipe data
<T>. - Bisa membuat fungsi Generic dan memanggilnya secara implisit/eksplisit.
- Bisa membuat Generic Interface dan Generic Type.
- Menggunakan Generic Class untuk pembuatan data struktur serbaguna.
- Membatasi tipe Generic menggunakan Generic Constraints (
extends). - Menggunakan operator
keyofuntuk mengambil nama properti objek. - Menggunakan operator
typeofuntuk mengambil tipe data dari variabel nyata. - Menggunakan
PartialdanRequireduntuk memanipulasi keharusan pengisian properti. - Menggunakan
Readonlyuntuk mengamankan data config. - Menggunakan
PickdanOmituntuk menyaring properti objek secara selektif. - Menggunakan
Recorduntuk membuat data kamus terstruktur. - Menggunakan
ExcludedanExtractuntuk menyaring tipe union. - Menggunakan
ReturnTypedanParametersuntuk mengintip spesifikasi fungsi. - Menyelesaikan Studi Kasus dan Mini Project.
- Menyelesaikan 10 Challenge pemrograman Generic.
Latihan Penutup
Section titled “Latihan Penutup”Tanpa melihat panduan, buatlah file src/bab9/review-generic.ts:
- Buat interface
Guru(id: number, nama: string, gaji: number). - Buat tipe
GuruPublikyang membuang propertigajimenggunakanOmit. - Buat class Generic
SimpanData<T extends { id: number }>dengan methodsimpan(item: T)danupdate(id: number, data: Partial<T>). - Buat objek repositori khusus guru, simpan satu data, update namanya secara parsial, lalu tampilkan hasil akhirnya dengan tipe
GuruPublikterproteksi.
Jalankan dan pastikan program berjalan lancar tanpa error.
Pesan untuk Kamu
Section titled “Pesan untuk Kamu”Generic dan Utility Types mengajarkan kita cara mendesain tipe data secara pintar. Setelah menyelesaikan bab ini, kamu tidak hanya bisa menulis kode program biasa, tetapi kamu siap merancang sistem aplikasi yang modular, kokoh, dan berstandar industri modern.
Selamat atas ketekunanmu menyelesaikan bab ini. Sukses selalu untuk perjalanan belajarmu! 🚀