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 membolehkan nilai seperti false
, rentetan kosong, atau nombor 0
dinilai seperti apa adanya. Ini adalah perbezaan besar dari operator OR logik tradisional (||
). Operator ini diperkenalkan dalam TypeScript 3.7.
Sintaks Asas
Sintaks asas adalah seperti berikut:.
1let result = value ?? defaultValue;
value
adalah sasaran yang diperiksa untuknull
atauundefined
.defaultValue
adalah nilai yang dikembalikan apabilavalue
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
Terdapat perbezaan penting antara operator nullish coalescing dan 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
- Seperti yang ditunjukkan, operator OR logik mengembalikan nilai lalai
18
walaupun nilai itu adalah0
.
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
-
Sebaliknya, operator nullish coalescing mengembalikan nilai asal walaupun ia adalah
0
. -
Pilihan antara operator OR logik dan operator nullish coalescing bergantung pada sama ada
0
atau rentetan kosong boleh diterima. Sebagai contoh, jika anda ingin mengekalkan umur pengguna sebagai0
, 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;
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
, sifatage
boleh menjadinumber
,null
, atauundefined
, jadi operator nullish coalescing digunakan untuk menetapkan nilai lalai18
. - Sementara itu, sifat
name
hanya membenarkanstring
, jadi nilainya digunakan seperti apa adanya.
Ringkasan
- Operator penggabungan nullish membantu menetapkan nilai default hanya apabila nilainya adalah
null
atauundefined
. Tidak seperti operator OR logik tradisional, ia tidak menganggapfalse
,0
, atau rentetan kosong sebagai 'falsy', menjadikannya sangat berguna apabila anda ingin mengekalkan nilai tersebut. 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,
3 // so the new value is assigned
4
5console.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
Menggunakan pernyataan if
, ia boleh ditulis seperti berikut:.
1let variable: string | null | undefined = null;
2if (variable === null || variable === undefined) {
3 variable = "Default Value";
4}
5console.log(variable); // Output: "Default Value"
Kaedah menggunakan operator ternari
Sebagai alternatif, menggunakan operator ternary, ia boleh ditulis seperti berikut:.
1let variable: string | null | undefined = undefined;
2variable = variable != null ? variable : "Default Value";
3// != null checks for both null and undefined
4// (intentional loose equality comparison)
5
6console.log(variable); // Output: "Default Value"
Kaedah ringkas menggunakan operator penugasan nullish coalescing
Sebaliknya, menggunakan operator penugasan nullish coalescing, ia boleh ditulis seperti berikut:.
1let variable: string | null = null;
2variable ??= "Default Value";
3console.log(variable); // Output: "Default Value"
Seperti yang ditunjukkan, operator penugasan nullish coalescing adalah lebih mudah dan lebih mudah dibaca berbanding kaedah penugasan yang lain, meningkatkan kejelasan 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 null
dan undefined
yang 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)
- Operator ini melakukan penugasan hanya apabila nilai adalah
null
atauundefined
. Sebagai contoh, nilai seperti rentetan kosong (""
),0
, ataufalse
tidak disasarkan.
Berhati-hati ketika menggunakannya dengan operator lain..
1let value: string | null = null;
2
3// Targets not only "null" and "undefined" but also falsy values
4value ||= "Default";
5console.log(value); // Output: "Default"
6
7value = "";
8// An empty string is also targeted
9value ||= "Default";
10console.log(value); // Output: "Default"
11
12value = null;
13// Targets only null or undefined
14value ??= "Default";
15console.log(value); // Output: "Default"
- Operator penugasan nullish coalescing mungkin menghasilkan keputusan yang tidak diingini apabila digunakan dengan operator lain. Sangat penting untuk memahami perbezaan antara operator ini dan operator penugasan OR logik.
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, kod menjadi lebih ringkas dan mudah dibaca.
Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.