Operator Nullish Coalescing di TypeScript
Dalam artikel ini, kami akan menjelaskan Operator Nullish Coalescing di TypeScript.
YouTube Video
Operator Nullish Coalescing di TypeScript
Operator nullish coalescing (??
) di TypeScript mirip dengan evaluasi short-circuit JavaScript tetapi lebih jelas digunakan untuk memberikan nilai pengganti hanya ketika sisi kiri adalah null
atau undefined
. Operator ini memungkinkan Anda untuk dengan mudah memeriksa apakah suatu nilai adalah null
atau undefined
dan menetapkan nilai default sesuai kebutuhan.
Operator nullish coalescing (??
) mengembalikan nilai di sisi kanan hanya jika sisi kiri adalah null
atau undefined
. Ini berarti nilai seperti false
, string kosong, atau angka 0
tetap tidak berubah. Ini adalah perbedaan besar dari operator logika OR tradisional (||
). Operator ini diperkenalkan di TypeScript 3.7.
Sintaks Dasar
1let result = value ?? defaultValue;
value
: Objek yang diperiksa apakahnull
atauundefined
defaultValue
: Nilai yang dikembalikan jikavalue
adalahnull
atauundefined
Contoh Penggunaan
1function getUserName(userName: string | null | undefined): string {
2 return userName ?? "Default User";
3}
4
5console.log(getUserName("Alice")); // Output: Alice
6console.log(getUserName(null)); // Output: Default User
7console.log(getUserName(undefined)); // Output: Default User
Di sini, fungsi getUserName
mengembalikan "Default User"
jika userName
adalah null
atau undefined
, jika tidak, fungsi tersebut mengembalikan nilai dari userName
.
Perbedaan dari operator logika OR
Operator logika OR memperlakukan nilai seperti false
, 0
, dan ""
(string kosong) sebagai "falsy," seperti halnya null
dan undefined
. Di sisi lain, operator nullish coalescing hanya menggunakan null
dan undefined
untuk pengganti.
Contoh operator logika OR
1function getUserAge(age: number | null | undefined): number {
2 return age || 18; // `0` also applies the default value
3}
4
5console.log(getUserAge(25)); // Output: 25
6console.log(getUserAge(0)); // Output: 18
7console.log(getUserAge(null)); // Output: 18
Contoh operator nullish coalescing
1function getUserAge(age: number | null | undefined): number {
2 return age ?? 18; // `0` does not apply the default value
3}
4
5console.log(getUserAge(25)); // Output: 25
6console.log(getUserAge(0)); // Output: 0
7console.log(getUserAge(null)); // Output: 18
Memilih antara operator logika OR dan operator nullish coalescing tergantung pada apakah 0
dan string kosong dapat diterima. Sebagai contoh, jika Anda ingin menjaga usia pengguna tetap 0
, Anda perlu menggunakan operator nullish coalescing.
Kombinasi dengan Tipe
Anda dapat meningkatkan kekuatan kode Anda dengan memanfaatkan keamanan tipe TypeScript yang dikombinasikan dengan operator nullish coalescing. Dalam contoh berikut, nilai default digunakan ketika properti tertentu adalah null
atau undefined
.
1interface User {
2 name: string;
3 age?: number | null;
4}
5
6function displayUserInfo(user: User): string {
7 const userName: string = user.name ?? "Anonymous";
8 const userAge: number = user.age ?? 18;
9 return `Name: ${userName}, Age: ${userAge}`;
10}
11
12const user1: User = { name: "John", age: null };
13const user2: User = { name: "Doe" };
14
15console.log(displayUserInfo(user1)); // Output: Name: John, Age: 18
16console.log(displayUserInfo(user2)); // Output: Name: Doe, Age: 18
- Dalam antarmuka
User
,age
adalahnumber | null
, yang memungkinkannull
atauundefined
sebagai nilainya. - Fungsi
displayUserInfo
mengembalikan"Anonymous"
jikaname
adalahnull
atauundefined
, dan18
jikaage
adalahnull
atauundefined
.
Ringkasan
Operator nullish coalescing membantu menetapkan nilai default hanya ketika nilai tersebut adalah null
atau undefined
. Berbeda dengan operator logika OR tradisional, operator ini tidak memperlakukan false
, 0
, atau string kosong sebagai "falsy," sehingga sangat berguna untuk menjaga nilai-nilai ini. Selain itu, menggabungkannya dengan sistem tipe TypeScript memungkinkan untuk membuat kode yang lebih kuat dan mudah dibaca.
Dengan menggunakan operator nullish coalescing secara efektif, Anda dapat menulis logika untuk menetapkan nilai default secara ringkas sambil mengurangi pemeriksaan null
yang tidak perlu.
Operator Nullish Coalescing Assignment di TypeScript
Operator nullish coalescing assignment (??=
) adalah operator yang relatif baru yang diperkenalkan di TypeScript, menyediakan metode yang praktis untuk menetapkan nilai hanya jika variabel tersebut adalah null
atau undefined
. Di sini, kami akan menjelaskan bagaimana operator ini bekerja, dalam situasi apa ini efektif, dan memberikan contoh dengan kode.
Apa itu Operator Nullish Coalescing Assignment
Operator penugasan nullish coalescing adalah operator penugasan yang didasarkan pada operator nullish coalescing. Operator ini digunakan untuk menetapkan nilai baru hanya jika variabel tersebut adalah null
atau undefined
.
1let variable: string | null = null;
2variable ??= "Default Value"; // The variable is null, so the new value is assigned
3console.log(variable); // Output: "Default Value"
Dengan menggunakan operator ini, Anda dapat menulis logika "tetapkan jika variabel undefined atau null" dengan lebih ringkas.
Perbandingan dengan Metode Penugasan Tradisional
Tanpa operator penugasan nullish coalescing, Anda perlu menggunakan pernyataan if
atau operator ternary untuk mencapai perilaku yang sama. Mari kita bandingkan dengan metode penugasan tradisional.
Metode konvensional
1let variable: string | null = null;
2if (variable === null || variable === undefined) {
3 variable = "Default Value";
4}
5console.log(variable); // Output: "Default Value"
Metode menggunakan operator ternary
1let variable: string | null = null;
2variable = variable ?? "Default Value";
3console.log(variable); // Output: "Default Value"
Metode ringkas menggunakan operator ??=
1let variable: string | null = null;
2variable ??= "Default Value";
3console.log(variable); // Output: "Default Value"
Operator penugasan nullish coalescing jauh lebih sederhana dan lebih mudah dibaca dibandingkan dengan metode penugasan lainnya, meningkatkan keterbacaan kode.
Contoh Khusus Penggunaan ??=
Operator penugasan nullish coalescing berguna dalam berbagai skenario, seperti menginisialisasi properti objek dan menetapkan nilai default. Berikut adalah beberapa contoh spesifik.
Inisialisasi properti objek
1interface Config {
2 theme?: string;
3 language?: string;
4}
5
6let config: Config = {};
7config.theme ??= "light"; // Set the default "light" theme if none is specified
8config.language ??= "en"; // Set the default "en" language if none is specified
9
10console.log(config); // Output: { theme: "light", language: "en" }
Inisialisasi array
1let numbers: number[] | null = null;
2numbers ??= []; // Assign an empty array if numbers is null
3
4numbers.push(1);
5console.log(numbers); // Output: [1]
Pengaturan nilai default untuk argumen fungsi
1function greet(name?: string) {
2 name ??= "Guest"; // Set name to "Guest" if it is undefined or null
3 console.log(`Hello, ${name}!`);
4}
5
6greet(); // Output: "Hello, Guest!"
7greet("Alice"); // Output: "Hello, Alice!"
Catatan dan Kendala
Operator penugasan nullish coalescing sangat berguna, tetapi ada beberapa hal yang perlu diperhatikan.
- Hanya menargetkan
null
danundefined
: Operator ini hanya menetapkan nilai jika nilainya adalahnull
atauundefined
. Misalnya, string kosong (""
),0
, danfalse
tidak menjadi target.
1let str: string | null = "";
2str ??= "Default";
3console.log(str); // Output: "" (remains an empty string)
4
5let num: number | undefined = 0;
6num ??= 100;
7console.log(num); // Output: 0 (remains 0)
- Menggabungkan dengan operator lain: Menggunakan operator penugasan nullish coalescing dengan operator lain dapat menghasilkan hasil yang tidak diinginkan. Sangat penting untuk memahami perbedaan antara operator ini dan operator penugasan logika OR.
1let value: string | null = null;
2value ||= "Default"; // Targets not only "null" and "undefined" but also falsy values
3console.log(value); // Output: "Default"
4
5value = "";
6value ||= "Default"; // An empty string is also targeted
7console.log(value); // Output: "Default"
8
9value = null;
10value ??= "Default"; // Targets only null or undefined
11console.log(value); // Output: "Default"
Kode Contoh
1let config: { theme?: string; language?: string } = {};
2
3// Use Nullish Coalescing Assignment to set default values
4config.theme ??= "light";
5config.language ??= "en";
6
7console.log(config); // Output: { theme: "light", language: "en" }
8
9let list: number[] | null = null;
10list ??= [];
11list.push(42);
12
13console.log(list); // Output: [42]
Dengan menggunakan operator penugasan nullish coalescing, Anda dapat menghilangkan kode yang tidak perlu dan menulis kode TypeScript yang lebih mulus dan elegan.
Ringkasan
Operator penugasan nullish coalescing (??=
) adalah salah satu operasi penugasan yang sederhana dan efisien dalam TypeScript. Ini sangat berguna ketika Anda perlu memeriksa null
atau undefined
saat menetapkan nilai default. Dibandingkan dengan pernyataan if
tradisional atau operator ternary, ini membuat kode lebih ringkas dan mudah dibaca, dan sebaiknya digunakan secara aktif dalam pengembangan di masa depan.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.