Materi
Formulir pemesanan Toko Nusantara mengirim data yang bentuknya tidak selalu rapi: status ditulis sebagai teks, jumlah kadang datang sebagai angka dan kadang sebagai teks, cara kirim berbeda bentuk antara ambil di gerai dan antar ke alamat, dan satu bagian datang mentah tanpa jaminan bentuk apa pun.
Empat latihan berikut memakai seluruh isi modul ini untuk menjinakkan data itu: union literal supaya status yang tidak dikenal ditolak kompiler, typeof untuk jumlah yang bertipe ganda, in untuk dua bentuk pengiriman, dan unknown untuk bagian yang belum diperiksa sama sekali. Setiap fungsi memiliki nilai balik yang aman untuk masukan yang tidak dikenal, sehingga tidak ada latihan yang berhenti dengan error saat berjalan.
Setiap test sengaja memuat masukan yang salah bentuk, seperti teks yang bukan angka atau null.
// Satu kiriman formulir apa adanya, sebelum diperiksa.
const kiriman = {
status: "dikirim",
jumlah: "12", // kadang angka, kadang teks
cara: { alamat: "Jl. Merdeka 10", ongkir: 12000 }, // atau { gerai: "Bandung" }
pesanan: JSON.parse('{ "id": "INV-2026-0001" }'), // bentuknya belum dijamin
};