Operator Nullish Coalescing dalam TypeScript
Dalam artikel ini, kami akan menjelaskan Operator Nullish Coalescing dalam TypeScript.
YouTube Video
Operator Nullish Coalescing dalam TypeScript
Operator nullish coalescing (??
) dalam TypeScript serupa dengan penilaian short-circuit dalam JavaScript tetapi lebih secara eksplisit digunakan untuk menyediakan nilai pengganti hanya apabila bahagian kiri adalah null
atau undefined
. Operator ini membolehkan anda dengan mudah memeriksa jika satu nilai adalah null
atau undefined
dan menetapkan nilai lalai jika diperlukan.
Operator nullish coalescing (??
) hanya mengembalikan nilai bahagian kanan apabila bahagian kiri adalah null
atau undefined
. Ini bermakna nilai seperti false
, string kosong, atau nombor 0
tetap tidak berubah. Ini adalah perbezaan besar dari operator OR logik tradisional (||
). Operator ini diperkenalkan dalam TypeScript 3.7.
Sintaks Asas
1let result = value ?? defaultValue;
value
: Subjek untuk diperiksa sama ada ia null atau undefineddefaultValue
: 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 ia mengembalikan nilai userName
.
Perbezaan daripada operator OR logik
Operator OR logik menganggap nilai seperti false
, 0
, dan ""
(string kosong) sebagai "falsy," sama seperti null
dan undefined
. Sebaliknya, operator nullish coalescing hanya menggunakan null
dan undefined
untuk fallback.
Contoh operator OR logik
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 penggabungan nullish
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 OR logik dan operator penggabungan nullish bergantung kepada sama ada 0
dan string kosong boleh diterima. Sebagai contoh, jika anda ingin mengekalkan umur pengguna sebagai 0
, anda perlu menggunakan operator penggabungan nullish.
Gabungan dengan Jenis
Anda dapat meningkatkan keteguhan kod anda dengan memanfaatkan keselamatan jenis TypeScript dengan gabungan operator nullish coalescing. Dalam contoh berikut, nilai lalai digunakan apabila sifat 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 antara muka
User
,age
adalahnumber | null
, membolehkannull
atauundefined
sebagai nilai. - Fungsi
displayUserInfo
mengembalikan"Anonymous"
jikaname
adalahnull
atauundefined
, dan18
jikaage
adalahnull
atauundefined
.
Ringkasan
Operator penggabungan nullish membantu menetapkan nilai default hanya apabila nilainya adalah null
atau undefined
. Tidak seperti operator OR logik tradisional, ia tidak menganggap false
, 0
, atau string kosong sebagai "falsy," menjadikannya sangat berguna untuk mengekalkan nilai-nilai ini. Selain itu, menggabungkannya dengan sistem jenis TypeScript membolehkan penghasilan kod yang lebih kukuh dan mudah dibaca.
Dengan menggunakan operator nullish coalescing dengan berkesan, anda boleh menulis logik secara ringkas untuk menetapkan nilai lalai sambil mengurangkan pemeriksaan null
yang tidak perlu.
Operator Peruntukan Nullish Coalescing dalam TypeScript
Operator peruntukan nullish coalescing (??=
) adalah operator baru yang diperkenalkan dalam TypeScript, menyediakan kaedah yang mudah untuk menetapkan nilai hanya jika pemboleh ubah adalah null
atau undefined
. Di sini, kami akan menerangkan bagaimana operator ini berfungsi, dalam situasi apa ia berkesan, dan memberikan contoh dengan kod.
Apakah Operator Peruntukan Nullish Coalescing
Operator penugasan penggabungan nullish adalah operator penugasan berdasarkan operator penggabungan nullish. Operator ini digunakan untuk menetapkan nilai baru hanya jika pemboleh ubah 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 boleh menulis logik dengan lebih ringkas untuk "menetapkan jika pemboleh ubah adalah undefined atau null".
Perbandingan dengan Kaedah Peruntukan Tradisional
Tanpa operator penugasan penggabungan nullish, anda perlu menggunakan penyataan if
atau operator ternari untuk mencapai kelakuan yang sama. Mari bandingkan dengan kaedah peruntukan tradisional.
Kaedah konvensional
1let variable: string | null = null;
2if (variable === null || variable === undefined) {
3 variable = "Default Value";
4}
5console.log(variable); // Output: "Default Value"
Kaedah menggunakan operator ternari
1let variable: string | null = null;
2variable = variable ?? "Default Value";
3console.log(variable); // Output: "Default Value"
Kaedah ringkas menggunakan operator ??=
1let variable: string | null = null;
2variable ??= "Default Value";
3console.log(variable); // Output: "Default Value"
Operator penugasan penggabungan nullish jauh lebih mudah dan lebih mudah dibaca berbanding dengan kaedah penugasan lain, meningkatkan kebolehbacaan kod.
Contoh Khusus Penggunaan ??=
Operator penugasan penggabungan nullish berguna dalam pelbagai situasi, seperti menginisialisasi ciri objek dan menetapkan nilai default. Berikut adalah beberapa contoh khusus.
Inisialisasi sifat 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 tatasusunan
1let numbers: number[] | null = null;
2numbers ??= []; // Assign an empty array if numbers is null
3
4numbers.push(1);
5console.log(numbers); // Output: [1]
Menetapkan nilai lalai 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!"
Nota dan Kekangan
Operator penugasan penggabungan nullish sangat berguna, tetapi terdapat beberapa peringatan.
- Hanya menyasarkan
null
danundefined
: Operator ini hanya menetapkan nilai jika nilainya adalahnull
atauundefined
. Sebagai contoh, nilai string kosong (""
),0
, danfalse
tidak disasarkan.
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 penggabungan nullish bersama operator lain mungkin menghasilkan hasil yang tidak diingini. Sangat penting untuk memahami perbezaan antara operator ini dan operator penugasan OR logik.
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"
Contoh Kod
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 penggabungan nullish, anda dapat menghapuskan kod yang tidak perlu dan menulis kod TypeScript yang lebih lancar dan elegan.
Ringkasan
Operator penugasan nullish coalescing (??=
) adalah salah satu operasi penugasan yang mudah dan efisien dalam TypeScript. Ia menjadi sangat berguna apabila anda perlu melakukan pemeriksaan terhadap null
atau undefined
semasa menetapkan nilai lalai. Berbanding dengan pernyataan if
tradisional atau operator ternary, ia menjadikan kod lebih ringkas dan mudah dibaca, serta patut digunakan secara aktif dalam pembangunan masa depan.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.