Challenge BAB 6
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah mengerjakan challenge ini, kamu dapat menerapkan properti objek, nested object, destructuring, spread operator, optional chaining, dan nullish coalescing untuk menyelesaikan berbagai masalah pemrograman berbasis objek.
Aturan Challenge
Section titled “Aturan Challenge”Challenge 1 — Objek Biodata Diri
Section titled “Challenge 1 — Objek Biodata Diri”Tingkat: Mudah
Buat sebuah objek biodata bertipe kustom (type alias) yang mendeskripsikan dirimu sendiri, minimal memiliki properti: nama (string), umur (number), dan aktif (boolean). Tampilkan seluruh properti objek tersebut menggunakan Dot Notation.
Challenge 2 — Tambah dan Hapus Kontak
Section titled “Challenge 2 — Tambah dan Hapus Kontak”Tingkat: Mudah
- Buat object
kontakdengan properti wajibnamadan properti opsionalinstagramdantwitter. - Setelah objek dibuat, tambahkan properti
instagram. - Setelah itu, hapus properti
twitter(jika ada). - Tampilkan objek di terminal setelah setiap tindakan.
Challenge 3 — Bracket Notation Kustom
Section titled “Challenge 3 — Bracket Notation Kustom”Tingkat: Mudah
Buat sebuah objek yang memiliki beberapa properti tidak standar (menggunakan spasi atau tanda minus, misalnya: "tanggal-lahir", "alamat rumah"). Tampilkan seluruh properti tersebut menggunakan Bracket Notation yang benar.
Challenge 4 — Destructuring Produk Toko
Section titled “Challenge 4 — Destructuring Produk Toko”Tingkat: Mudah
Buat sebuah objek produk (id, namaBarang, harga, stok). Gunakan destructuring untuk mengambil properti namaBarang dan harga ke dalam variabel mandiri. Tampilkan variabel tersebut dengan template literal.
Challenge 5 — Fotokopi & Upgrade RAM (Spread)
Section titled “Challenge 5 — Fotokopi & Upgrade RAM (Spread)”Tingkat: Mudah
Buat objek laptop (merk: string, ram: number). Salin objek tersebut ke objek baru bernama laptopBaru sambil memperbarui kapasitas ram menjadi dua kali lipat menggunakan spread operator. Pastikan objek laptop asli tidak berubah nilainya.
Challenge 6 — Objek Alamat Bertingkat (Nested)
Section titled “Challenge 6 — Objek Alamat Bertingkat (Nested)”Tingkat: Menengah
Buat type alias Siswa yang memiliki properti nama dan nested object alamat (jalan, kota). Buat objek siswa tersebut dan tampilkan kota asal siswa menggunakan akses properti berantai (dot notation berantai).
Challenge 7 — Daftar Barang Belanja (Array of Object)
Section titled “Challenge 7 — Daftar Barang Belanja (Array of Object)”Tingkat: Menengah
Buat array of object bernama keranjang yang berisi 4 produk (nama, harga, jumlah). Gunakan loop .forEach() untuk mencetak nama produk dan total harga (harga × jumlah) masing-masing produk.
Challenge 8 — Penyelamat Crash (Optional Chaining)
Section titled “Challenge 8 — Penyelamat Crash (Optional Chaining)”Tingkat: Menengah
Buat type alias Profil yang memiliki properti wajib nama dan properti opsional mediaSosial (berisi nested object tiktok string).
- Buat profil Budi tanpa properti
mediaSosial. - Akses
budi.mediaSosial.tiktoksecara aman menggunakan optional chaining agar program tidak crash. Tampilkan hasilnya.
Challenge 9 — Default Kontak (Nullish Coalescing)
Section titled “Challenge 9 — Default Kontak (Nullish Coalescing)”Tingkat: Menengah
Sama seperti Challenge 8, buat profil Budi tanpa properti mediaSosial. Gunakan kombinasi optional chaining dan nullish coalescing untuk menampilkan nama akun Tiktok Budi, atau teks "Tidak memiliki akun Tiktok" jika propertinya tidak diisi.
Challenge 10 — Sistem Manajemen Koperasi
Section titled “Challenge 10 — Sistem Manajemen Koperasi”Tingkat: Menengah
Buat sebuah sistem pengelolaan barang koperasi sekolah sederhana menggunakan array of object:
- Setiap barang memiliki properti:
kode(string),nama(string),harga(number), danstok(number). - Buat minimal 4 barang.
- Buat fungsi
tampilkanHabis()yang menggunakanfilter()untuk menyaring dan menampilkan barang yang stoknya kurang dari 5. - Buat fungsi
hitungTotalAset()yang menggunakanreduce()untuk menghitung total nilai uang dari seluruh aset barang (harga × stok).
Latihan
Section titled “Latihan”Pilih salah satu challenge di atas yang menurutmu paling sulit. Buat coretan alur prosesnya di kertas, lalu tulis ulang kode solusinya dari nol tanpa melihat petunjuk.
Ringkasan
Section titled “Ringkasan”- Latihan challenge mengasah kemampuan manipulasi properti objek.
- Gunakan TSX untuk verifikasi hasil secara mandiri.
- Fokus pada keamanan tipe data TypeScript.