Operator Nullish
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat memakai ?? untuk menampilkan atau memakai nilai cadangan ketika data bernilai null atau undefined.
Pendahuluan
Section titled “Pendahuluan”Data tidak selalu lengkap. Email siswa mungkin belum diisi. Nomor telepon bisa belum tersedia. Program tetap perlu menampilkan informasi yang nyaman dibaca tanpa menghasilkan teks null.
Operator nullish coalescing ?? menyediakan nilai cadangan untuk kondisi itu.
Analogi Kehidupan Sehari-hari
Section titled “Analogi Kehidupan Sehari-hari”Bayangkan kamu membawa botol minum cadangan.
Jika botol utama ada air → minum dari botol utamaJika botol utama kosong/tidak ada → pakai air cadangan?? bekerja seperti rencana cadangan, tetapi hanya aktif jika nilai utama benar-benar null atau undefined.
Penjelasan Materi
Section titled “Penjelasan Materi”Bentuk umum:
nilaiUtama ?? nilaiCadangan- Jika
nilaiUtamabukannulldan bukanundefined, hasilnyanilaiUtama. - Jika
nilaiUtamanullatauundefined, hasilnyanilaiCadangan.
Mari Mencoba
Section titled “Mari Mencoba”Buat src/bab2/operator-nullish.ts:
const namaSiswa: string = "Dewi"const email: string | null = nullconst nomorTelepon: string | undefined = undefinedconst jumlahPesan: number = 0
const emailTampil: string = email ?? "Email belum diisi"const teleponTampil: string = nomorTelepon ?? "Nomor belum diisi"const pesanTampil: number = jumlahPesan ?? 10
console.log(`Nama: ${namaSiswa}`)console.log(`Email: ${emailTampil}`)console.log(`Telepon: ${teleponTampil}`)console.log(`Jumlah pesan: ${pesanTampil}`)Jalankan:
tsx src/bab2/operator-nullish.tsOutput
Section titled “Output”Nama: DewiEmail: Email belum diisiTelepon: Nomor belum diisiJumlah pesan: 0Penjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”emaildiberi tipestring | null, jadi boleh teks ataunull.email ?? "Email belum diisi"memakai teks cadangan karena email bernilainull.nomorTelepon ?? ...memakai cadangan karena nilainyaundefined.jumlahPesanbernilai0, bukan nullish. Maka??tetap memilih0.
?? vs ||
Section titled “?? vs ||”Keduanya terlihat serupa, tetapi berbeda:
const jumlahPesan: number = 0
console.log(jumlahPesan ?? 10) // 0console.log(jumlahPesan || 10) // 10|| menganggap 0, string kosong "", dan false sebagai nilai falsy lalu memakai cadangan. ?? hanya memakai cadangan untuk null atau undefined.
Kesalahan Umum
Section titled “Kesalahan Umum”const nilai: number | null = nullconst tampil = nilai ?? "Belum ada"Kode di atas valid, tetapi tipe hasilnya number | string. Jangan memasukkannya ke variabel yang hanya bertipe number.
const tampil: string = nilai ?? "Belum ada"Ini juga tidak valid jika nilai bisa number. Ubah angka menjadi string saat ingin digabungkan ke teks:
const tampil: string = nilai === null ? "Belum ada" : String(nilai)Latihan
Section titled “Latihan”Buat variabel alamat bertipe string | null dan hobi bertipe string | undefined. Gunakan ?? agar output selalu menampilkan informasi yang ramah dibaca.
Ringkasan
Section titled “Ringkasan”??memberi nilai cadangan untuknullatauundefined.- Bentuknya:
nilaiUtama ?? nilaiCadangan. ??berbeda dari||karena tidak mengganti nilai0,false, atau"".