Nullish Coalescing
Operator _nullish coalescing_ adalah sebuah alternatif
untuk operator || yang akan mengembalikan ekspresi sebelah kanan
apabila ekspresi sebelah kiri bernilai null atau undefined.
Sebaliknya, operator || menggunakan pemeriksaan _falsy_, yang berarti
sebuah string kosong atau bilangan yang bernilai akan dianggap false.
Sebuah contoh yang baik untuk fitur ini adalah ketika berurusan dengan
objek parsial yang memiliki nilai anggapan ketika sebuah pengidentifikasi
tidak dinyatakan.
interface KonfigurasiAplikasi {
// Nilai anggapan: "(tidak bernama)"; string kosong merupakan nilai yang VALID
nama: string;
// Nilai anggapan: -1; 0 merupakan nilai yang valid
barang: number;
// Nilai anggapan: true
aktif: boolean;
}
function perbaruiAplikasi(konfigurasi: Partial) {
// Dengan operator _null-coalescing_
konfigurasi.nama = konfigurasi.nama ?? "(tidak bernama)";
konfigurasi.barang = konfigurasi.barang ?? -1;
konfigurasi.aktif = konfigurasi.aktif ?? true;
// Solusi saat ini
konfigurasi.nama = typeof konfigurasi.nama === "string" ? konfigurasi.nama : "(tidak bernama)";
konfigurasi.barang = typeof konfigurasi.barang === "number" ? konfigurasi.barang : -1;
konfigurasi.aktif = typeof konfigurasi.aktif === "boolean" ? konfigurasi.aktif : true;
// Menggunakan operator || yang dapat menghasilkan data yang buruk
konfigurasi.nama = konfigurasi.nama || "(tidak bernama)"; // tidak mengizinkan masukan bernilai ""
konfigurasi.barang = konfigurasi.barang || -1; // tidak mengizinkan masukan bernilai 0
konfigurasi.aktif = konfigurasi.aktif || true; // sangat buruk, karena selalu mengembalikan nilai true
}
// Anda dapat membaca lebih lanjut tentang _nullish coalescing_ pada
// tulisan blog versi 3.7:
//
// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/