Object Destructuring
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat menggunakan object destructuring untuk mengambil properti-properti objek ke dalam variabel mandiri, serta memberikan nama baru (aliasing) jika diperlukan.
Pendahuluan
Section titled “Pendahuluan”Saat kita ingin menggunakan beberapa properti dari satu object, kita sering menuliskan nama objeknya berulang-ulang: siswa.nama, siswa.umur, siswa.kelas. TypeScript (dan JavaScript modern) menyediakan cara ringkas bernama destructuring untuk membongkar properti menjadi variabel mandiri.
Penjelasan Materi
Section titled “Penjelasan Materi”Object destructuring menggunakan kurung kurawal {} di sebelah kiri operator penugasan =:
const { nama, umur } = siswaSintaks ini secara otomatis membuat dua variabel baru: nama (berisi siswa.nama) dan umur (berisi siswa.umur).
Analogi Kehidupan Sehari-hari
Section titled “Analogi Kehidupan Sehari-hari”Mengambil Dokumen Tertentu Dari Map
Section titled “Mengambil Dokumen Tertentu Dari Map”Kamu memiliki map plastik besar berisi biodata siswa (foto, rapor, KTP). Daripada kamu membawa-bawa map plastik besar itu ke mana-mana, kamu membuka map tersebut, mengambil hanya lembaran Rapor dan KTP, lalu meletakkannya di atas mejamu sebagai dokumen mandiri. Map besarnya tetap tersimpan di laci.
Visual Illustration
Section titled “Visual Illustration”Objek siswa┌──────────────────────┐│ nama: "Putra" │ ───► const { nama, umur } = siswa│ umur: 17 ││ kelas: "XI RPL" │ ───► menghasilkan variabel baru:└──────────────────────┘ const nama = "Putra" const umur = 17Mari Mencoba
Section titled “Mari Mencoba”Buat src/bab6/destructuring.ts:
type Siswa = { nama: string umur: number kelas: string nomorHP?: string}
const siswaA: Siswa = { nama: "Putra Ramadhan", umur: 17, kelas: "XI RPL 1", nomorHP: "0812345"}
// 1. Destructuring dasarconst { nama, kelas } = siswaAconsole.log(`Nama : ${nama}`)console.log(`Kelas: ${kelas}`)
// 2. Destructuring dengan nama variabel baru (Aliasing)const { nama: namaLengkap, umur: usiaSiswa } = siswaAconsole.log(`\nNama Lengkap: ${namaLengkap}`)console.log(`Usia Siswa : ${usiaSiswa}`)
// 3. Destructuring dengan nilai default jika properti undefinedconst { nomorHP, email = "Belum diisi" } = siswaAconsole.log(`\nHP : ${nomorHP}`)console.log(`Email: ${email}`) // Memakai nilai defaultJalankan:
tsx src/bab6/destructuring.tsOutput
Section titled “Output”Nama : Putra RamadhanKelas: XI RPL 1
Nama Lengkap: Putra RamadhanUsia Siswa : 17
HP : 0812345Email: Belum diisiPenjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”const { nama, kelas } = siswaA— mengambilnamadankelasdari objeksiswaAdan membuat variabel dengan nama yang sama.const { nama: namaLengkap }— mengambil propertinamatetapi menyimpannya ke dalam nama variabel baru bernamanamaLengkap.email = "Belum diisi"— jika propertiemailtidak ada (undefined), variabelemailotomatis diisi dengan nilai default"Belum diisi".
Kesalahan yang Sering Terjadi
Section titled “Kesalahan yang Sering Terjadi”❌ Salah menulis nama properti saat destructuring
Section titled “❌ Salah menulis nama properti saat destructuring”const { namaSiswa } = siswaA // Error!// Property 'namaSiswa' does not exist on type 'Siswa'.Perbaikan: Nama variabel di dalam {} wajib sama persis dengan nama properti yang ada di dalam object aslinya (kecuali jika kamu menggunakan aliasing :).
Latihan
Section titled “Latihan”Buat object buku (judul, penulis, tahun). Gunakan destructuring untuk mengambil judul dan penulis ke dalam variabel mandiri, lalu tampilkan nilainya.
Ringkasan
Section titled “Ringkasan”- Destructuring membongkar properti objek menjadi variabel mandiri.
- Sintaks:
const { properti1, properti2 } = objek. - Gunakan
:untuk mengubah nama variabel (aliasing):const { nama: namaBaru } = objek. - Gunakan
=untuk memberikan nilai default jika properti tidak tersedia.