টাইপস্ক্রিপ্টে নালিশ কোয়ালেসিং অপারেটর
এই প্রবন্ধে, আমরা টাইপস্ক্রিপ্টে নালিশ কোয়ালেসিং অপারেটারের ব্যাখ্যা করব।
YouTube Video
টাইপস্ক্রিপ্টে নালিশ কোয়ালেসিং অপারেটর
টাইপস্ক্রিপ্টে নালিশ কোয়ালেসিং অপারেটর (??
) জাভাস্ক্রিপ্টের শর্ট-সার্কিট ইভালুয়েশনের মতো, তবে এটি আরও স্পষ্টভাবে ব্যবহৃত হয় একটি বিকল্প মান প্রদান করতে যখন বাম পাশটি কেবল null
বা undefined
হয়। এই অপারেটর আপনাকে সহজেই চেক করতে দেয় যে একটি মান null
অথবা undefined
কিনা এবং প্রয়োজন অনুসারে একটি ডিফল্ট মান সেট করতে দেয়।
নালিশ কোয়ালেসিং অপারেটর (??
) কেবল তখনই ডান পাশের মানটি ফিরিয়ে দেয় যখন বাম পাশটি null
অথবা undefined
হয়। এটি false
, একটি খালি স্ট্রিং, বা সংখ্যা 0
এর মতো মানগুলিকে সেগুলির প্রকৃত মান হিসাবে মূল্যায়ন করতে সক্ষম করে। এটি প্রচলিত লজিক্যাল OR অপারেটর (||
) থেকে একটি প্রধান পার্থক্য। এই অপারেটরটি TypeScript 3.7-এ প্রবর্তিত হয়েছিল।
মূল সিনট্যাক্স
ভিত্তিরাদ syntax নিম্নরূপ:।
1let result = value ?? defaultValue;
value
হল টার্গেট যাnull
বাundefined
এর জন্য যাচাই করা হচ্ছে।value
যদিnull
বাundefined
হয়, তখনdefaultValue
সেই সময়ে ফেরত দেওয়া মান।
উদাহরণ ব্যবহার
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
এখানে, ফাংশন getUserName
userName
null
বা undefined
হলে "Default User"
ফেরত দেয়, অন্যথায় এটি userName
এর মানটি ফেরত দেয়।
লজিক্যাল OR অপারেটর থেকে পার্থক্য
নালিশ কোয়ালেসিং অপারেটর এবং লজিক্যাল OR অপারেটরের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে। লজিক্যাল OR অপারেটর false
, 0
, এবং ""
(খালি স্ট্রিং) এর মতো মানগুলোকে "মিথ্যা" হিসাবে বিবেচনা করে, null
এবং undefined
এর মতো। অন্যদিকে, নালিশ কোয়ালেসিং অপারেটর কেবল null
এবং undefined
কে fallback-এর জন্য ব্যবহার করে।
লজিক্যাল 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
- যেমন দেখা যাচ্ছে, লজিক্যাল OR অপারেটর এমনকি মান
0
হলেও ডিফল্ট মান18
ফেরত দেয়।
নালিশ কোয়ালেসিং অপারেটরের উদাহরণ
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
-
অন্যদিকে, নালিশ কোয়ালেসিং অপারেটর মূল মানটি ফেরত দেয়, এমনকি এটি
0
হলেও। -
লজিক্যাল OR অপারেটর এবং নালিশ কোয়ালেসিং অপারেটরের মধ্যে পছন্দ নির্ভর করে এটি
0
বা খালি স্ট্রিং গ্রহণযোগ্য কিনা তার ওপর। উদাহরণস্বরূপ, আপনি যদি কোনও ব্যবহারকারীর বয়স0
রাখতে চান, তবে আপনাকে নালিশ কোয়ালেসিং অপারেটর ব্যবহার করতে হবে।
টাইপের সাথে সংমিশ্রণ
আপনি নালিশ কোয়ালেসিং অপারেটরের সাথে টাইপস্ক্রিপ্টের টাইপ সেফটি ব্যবহার করে আপনার কোডের মজবুতি বাড়াতে পারেন। নীচের উদাহরণে, ডিফল্ট মানগুলি ব্যবহৃত হয় যখন নির্দিষ্ট প্রোপার্টিগুলি null
বা 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
User
ইন্টারফেসে,age
প্রপার্টি একটিnumber
,null
, বাundefined
হতে পারে, তাই নালিশ কোয়ালেসিং অপারেটর ব্যবহৃত হয় ডিফল্ট মান18
এসাইন করার জন্য।- এদিকে,
name
প্রপার্টি কেবলstring
গ্রহণ করে, তাই মানটি তার আসল রূপেই ব্যবহৃত হয়।
সারসংক্ষেপ
- নালিশ কোয়ালেসিং অপারেটর শুধুমাত্র তখন ডিফল্ট মান সেট করতে সাহায্য করে যখন মানটি
null
বাundefined
হয়। প্রচলিত লজিক্যাল OR অপারেটরের থেকে আলাদা, এটিfalse
,0
, বা খালি স্ট্রিংকে 'falsy' হিসাবে বিবেচনা করে না, যা এই মানগুলি সংরক্ষণ করতে চাইলে বিশেষভাবে কাজে লাগে। অতিরিক্তভাবে, এটি TypeScript-এর টাইপ সিস্টেমের সাথে একত্রিত করলে আরও মজবুত এবং পাঠযোগ্য কোড তৈরি করা সম্ভব হয়। - nullish coalescing অপারেটরটি কার্যকরভাবে ব্যবহার করে, আপনি সংক্ষিপ্তভাবে ডিফল্ট মান নির্ধারণের জন্য লজিক লিখতে পারেন এবং প্রয়োজনহীন
null
যাচাইকরণ হ্রাস করতে পারেন।
TypeScript-এ Nullish Coalescing Assignment অপারেটর
nullish coalescing assignment অপারেটর (??=
) হল TypeScript-এ নতুন চালু হওয়া একটি অপারেটর, যা একটি ভেরিয়েবল শুধুমাত্র null
বা undefined
হলে মান বরাদ্দ করার জন্য একটি সুবিধাজনক পদ্ধতি প্রদান করে। এখানে, আমরা ব্যাখ্যা করব এই অপারেটরটি কীভাবে কাজ করে, এটি কোন পরিস্থিতিতে কার্যকর, এবং কোড সহ উদাহরণ প্রদান করব।
Nullish Coalescing Assignment অপারেটর কী
নালিশ কোয়ালেসিং অ্যাসাইনমেন্ট অপারেটর হলো নালিশ কোয়ালেসিং অপারেটরের উপর ভিত্তি করে একটি অ্যাসাইনমেন্ট অপারেটর। এই অপারেটরটি নতুন মান বরাদ্দ করতে ব্যবহৃত হয়, শুধুমাত্র যখন ভেরিয়েবলটি null
বা 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"
এই অপারেটরটি ব্যবহার করে, আপনি সংক্ষিপ্তভাবে "ভেরিয়েবলটি undefined বা null হলে মান বরাদ্দ করুন" এই লজিকটি লিখতে পারবেন।
প্রচলিত অ্যাসাইনমেন্ট পদ্ধতির সাথে তুলনা
নালিশ কোয়ালেসিং অ্যাসাইনমেন্ট অপারেটর ছাড়াই, একই আচরণ পেতে আপনাকে একটি if
স্টেটমেন্ট বা টারনারি অপারেটর ব্যবহার করতে হবে। আসুন প্রচলিত অ্যাসাইনমেন্ট পদ্ধতির সাথে তুলনা করি।
প্রচলিত পদ্ধতি
একটি if
বিবৃতি ব্যবহার করে, এটি নিম্নলিখিতভাবে লেখা যেতে পারে:।
1let variable: string | null | undefined = null;
2if (variable === null || variable === undefined) {
3 variable = "Default Value";
4}
5console.log(variable); // Output: "Default Value"
টারনারি অপারেটর ব্যবহার করে পদ্ধতি
অথবা, টার্নারি অপারেটর ব্যবহার করে, এটি নিম্নলিখিতভাবে লেখা যেতে পারে:।
1let variable: string | null | undefined = undefined;
2variable = variable != null ? variable : "Default Value";
3// != null checks for both null and undefined (intentional loose equality comparison)
4
5console.log(variable); // Output: "Default Value"
নালিশ কোয়ালেসিং এসাইনমেন্ট অপারেটর ব্যবহার করে একটি সংক্ষিপ্ত পদ্ধতি।
অন্যদিকে, নালিশ কোয়ালেসিং এসাইনমেন্ট অপারেটর ব্যবহার করে এটি এভাবে লেখা যেতে পারে:।
1let variable: string | null = null;
2variable ??= "Default Value";
3console.log(variable); // Output: "Default Value"
যেমন দেখা যায়, নালিশ কোয়ালেসিং এসাইনমেন্ট অপারেটর অন্যান্য এসাইনমেন্ট পদ্ধতির তুলনায় অনেক সহজ এবং আরও পাঠযোগ্য, যা কোডের স্বচ্ছতা উন্নত করে।
??=
ব্যবহারের নির্দিষ্ট উদাহরণ
নালিশ কোয়ালেসিং অ্যাসাইনমেন্ট অপারেটর বিভিন্ন পরিস্থিতিতে উপকারী, যেমন অবজেক্টের প্রপার্টিজ ইনিশিয়ালাইজ করা এবং ডিফল্ট মান সেট করা। এখানে কিছু নির্দিষ্ট উদাহরণ দেওয়া হলো।
অবজেক্ট প্রোপার্টির সূচনা
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" }
অ্যারের সূচনা
1let numbers: number[] | null = null;
2numbers ??= []; // Assign an empty array if numbers is null
3
4numbers.push(1);
5console.log(numbers); // Output: [1]
ফাংশনের আর্গুমেন্টের জন্য ডিফল্ট মান সেট করা
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!"
মন্তব্য এবং সীমাবদ্ধতা
নালিশ কোয়ালেসিং অ্যাসাইনমেন্ট অপারেটর খুবই উপযোগী, তবে কিছু সতর্কতা রয়েছে।
- শুধুমাত্র
null
এবংundefined
লক্ষ্যবস্তু।।- এই অপারেটরটি কেবল তখনই এসাইনমেন্ট সম্পাদন করে যখন মানটি
null
বাundefined
হয়। উদাহরণস্বরূপ, একটি খালি স্ট্রিং (""
),0
, বাfalse
এর মতো মানগুলি লক্ষ্য করা হয় না।
- এই অপারেটরটি কেবল তখনই এসাইনমেন্ট সম্পাদন করে যখন মানটি
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)
- ইতর অপারেটরের সাথে এটি ব্যবহার করার সময় সতর্ক থাকুন।।
- নালিশ কোয়ালেসিং এসাইনমেন্ট অপারেটর অন্য অপারেটরগুলির সাথে ব্যবহার করলে অনভিপ্রেত ফলাফল দিতে পারে। এটি এবং লজিক্যাল 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"
নমুনা কোড
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]
নালিশ কোয়ালেসিং অ্যাসাইনমেন্ট অপারেটর ব্যবহার করে আপনি অনাবশ্যক কোড মুছে ফেলে আরও মসৃণ এবং সুন্দর টাইপস্ক্রিপ্ট কোড লিখতে পারেন।
সারসংক্ষেপ
নালিশ কোঅ্যালেসিং অ্যাসাইনমেন্ট অপারেটর (??=
) হল TypeScript এর একটি সহজ এবং কার্যকর অ্যাসাইনমেন্ট অপারেশন। যখন আপনি ডিফল্ট মান সেট করার সময় null
বা undefined
যাচাই করতে চান, তখন এটি বিশেষভাবে উপযোগী। প্রচলিত if
বিবৃতি বা টার্নারি অপারেটরের তুলনায়, কোড আরও সংক্ষিপ্ত এবং সহজপাঠ্য হয়ে ওঠে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।