টাইপস্ক্রিপ্টে ঐচ্ছিক চেনিং
এই প্রবন্ধে আমরা টাইপস্ক্রিপ্টে ঐচ্ছিক চেনিং সম্পর্কে বিশদে আলোচনা করব।
YouTube Video
টাইপস্ক্রিপ্টে ঐচ্ছিক চেনিং
টাইপস্ক্রিপ্টে ঐচ্ছিক চেনিং একটি কার্যকর ফিচার যা গভীরভাবে নেস্ট করা অবজেক্ট বা অ্যারেগুলির প্রোপার্টি অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এই ফিচারটি অস্তিত্বহীন প্রোপার্টি অ্যাক্সেস করার সময় ত্রুটি রোধ করে, যা আপনাকে সংক্ষিপ্ত এবং পাঠযোগ্য কোড লেখার সুযোগ দেয়।
ঐচ্ছিক চেনিং কি?
ঐচ্ছিক চেনিং অপারেটর (?.
) একটি অবজেক্ট প্রোপার্টি বা মেথড অ্যাক্সেসের সময় যা অস্তিত্বহীন সেটি ফিরিয়ে দেয় undefined
। এর ফলে, যদি প্রোপার্টি না থাকে, কোডটি কোনো ত্রুটি ছাড়াই চালানো চালিয়ে যেতে সক্ষম হয়।
উদাহরণস্বরূপ, নীচে দেখানো একটি নেস্ট করা অবজেক্টের প্রোপার্টি অ্যাক্সেস করার সময় যদি ওই প্রোপার্টি সাধারণ পদ্ধতিতে না থাকে তবে একটি ত্রুটি ঘটে।
উদাহরণ
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice'
11};
12
13// Normal access
14console.log(user.address.postalCode); // Error: Cannot read property 'postalCode' of undefined
- এই ক্ষেত্রে, যদি
address
বিদ্যমান না থাকে তবে একটি ত্রুটি ঘটবে। এই সমস্যা প্রতিরোধ করার জন্য ঐচ্ছিক চেনিং ব্যবহার করা যেতে পারে।
ঐচ্ছিক চেইনিং ব্যবহারের উদাহরণ
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice'
11};
12
13console.log(user.address?.postalCode); // undefined
- ঐচ্ছিক চেনিং ব্যবহার প্রোপার্টি না থাকলে ত্রুটি এড়িয়ে যায় এবং পরিবর্তে
undefined
প্রদান করে।
ঐচ্ছিক চেনিং কীভাবে ব্যবহার করবেন
ঐচ্ছিক চেনিং বিভিন্ন পরিস্থিতিতে ব্যবহার করা যেতে পারে, যেমন প্রোপার্টি অ্যাক্সেস, ফাংশন কল এবং অ্যারে অ্যাক্সেস। আমরা কীভাবে প্রতিটি ব্যবহার করতে হয় তা ব্যাখ্যা করব।
প্রোপার্টি অ্যাক্সেস করা
আপনি নিরাপদে অবজেক্টের নেস্ট করা প্রোপার্টি অ্যাক্সেস করতে পারেন।
1interface Company {
2 name: string;
3 location?: {
4 city?: string;
5 country?: string;
6 };
7}
8
9const company: Company = {
10 name: 'Tech Corp',
11 location: {
12 city: 'New York'
13 }
14};
15
16console.log(company.location?.city); // 'New York'
17console.log(company.location?.country); // undefined
এই কোডটি ঐচ্ছিক চেইনিং ব্যবহার করে company
অবজেক্টে location
প্রপার্টি থাকলেই কেবল city
এবং country
প্রপার্টিগুলোতে অ্যাক্সেস করে।
ফাংশন কলস
ফাংশন কল করার পূর্বে ঐচ্ছিক চেনিং ফাংশনের অস্তিত্বও পরীক্ষা করতে পারে।
1interface User {
2 name?: string;
3 greet?: () => void;
4}
5
6const user: User = {
7 name: 'Bob',
8 // greet is undefined
9};
10
11// Check if the function exists before calling it
12user.greet?.(); // The call is not made, and no error occurs
এই কোডটি ঐচ্ছিক চেইনিং ব্যবহার করে নিরাপদভাবে greet
ফাংশনটি কল করে শুধুমাত্র যদি এটি বিদ্যমান থাকে। এমনকি ফাংশনটি সংজ্ঞায়িত না থাকলেও কোনো এরর হয় না।
অ্যারে অ্যাক্সেস
ঐচ্ছিক চেনিং অ্যারেতে প্রয়োগ করা যেতে পারে এলিমেন্টের অস্তিত্ব পরীক্ষা করার জন্য।
1interface Team {
2 members?: string[];
3}
4
5const team: Team = {
6 members: ['Alice', 'Bob', 'Charlie']
7};
8
9console.log(team.members?.[0]); // 'Alice'
10console.log(team.members?.[5]); // undefined
এই কোডটি কেবলমাত্র team.members
বিদ্যমান থাকলে অ্যারে উপাদানগুলোতে অ্যাক্সেস করে, বিদ্যমান ইনডেক্সগুলোর জন্য মান ফেরত দেয় এবং অনুপস্থিত ইনডেক্সের জন্য undefined
ফেরত দেয়।
ঐচ্ছিক চেইনিং এবং নালিশ কোয়েলেসিং অপারেটর
ঐচ্ছিক চেনিং undefined
প্রদান করে, তবে কখনও কখনও এটি যথেষ্ট নয়। এই ক্ষেত্রে, নালিশ কোয়েলেসিং অপারেটর (??
), যা TypeScript 3.7-এ যুক্ত হয়েছে, null
বা undefined
এর জন্য ডিফল্ট মান সেট করতে ব্যবহার করা যায়।
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Carol'
11};
12
13// Use 'Unknown' as the default value if name does not exist
14const userName = user.name ?? 'Unknown';
15
16console.log(userName); // 'Carol'
ঐচ্ছিক শৃঙ্খলায়নের সাথে মিলিয়ে এটি ব্যবহার করলে আপনি আরও বেশি নমনীয় কোড লিখতে পারেন।
1console.log(user.address?.postalCode ?? 'Not provided'); // 'Not provided'
ঐচ্ছিক শৃঙ্খলায়ন ব্যবহারের সময় সতর্কতা
ঐচ্ছিক চেইনিং ব্যবহারের সময় নিম্নলিখিত বিষয়গুলো মনে রাখা গুরুত্বপূর্ণ:।
-
ঐচ্ছিক চেইনিংয়ের অপ্রয়োজনীয় ব্যবহার
- যেসব প্রপার্টি বা মেথড অবশ্যই থাকবে বলে নিশ্চয়তা আছে, সেখানে ঐচ্ছিক চেইনিং ব্যবহার করলে আপনার কোড অপ্রয়োজনীয়ভাবে শব্দবহুল হয়ে যেতে পারে। যখন অ্যাক্সেস করা লক্ষ্যটির অস্তিত্ব অনিশ্চিত, তখনই এটি ব্যবহার করা সেরা।
-
টাইপোগ্রাফিক্যাল ত্রুটি
- ঐচ্ছিক চেইনিং অতিরিক্তভাবে ব্যবহার করলে টাইপোগ্রাফিক্যাল ভুলের কারণে অনাকাঙ্ক্ষিত প্রপার্টি অ্যাক্সেস করা হলে সেগুলো খেয়াল করা কঠিন হতে পারে। সঠিক টাইপ চেক করুন এবং এটি সতর্কতার সাথে ব্যবহার করুন।
কোডের সারাংশ
1interface User {
2 name?: string;
3 address?: {
4 city?: string;
5 postalCode?: string;
6 };
7}
8
9const user: User = {
10 name: 'Alice',
11 address: {
12 city: 'Tokyo'
13 }
14};
15
16// Example of optional chaining
17console.log(user.address?.city); // 'Tokyo'
18console.log(user.address?.postalCode); // undefined
19
20// Using optional chaining combined with nullish coalescing
21console.log(user.address?.postalCode ?? 'Not provided'); // 'Not provided'
সারসংক্ষেপ
TypeScript-এর ঐচ্ছিক শৃঙ্খলায়ন গভীরভাবে নেস্টেড অবজেক্ট বা অ্যারে অ্যাক্সেস করার সময় ত্রুটি এড়িয়ে, সংক্ষিপ্ত কোড প্রদান করে। এছাড়াও, এটি নালিশ কোয়েলেসিং অপারেটরের সাথে মিশিয়ে ব্যবহার করলে আপনি ডিফল্ট মান নির্ধারণ করতে এবং আরও নমনীয় লজিক তৈরি করতে পারেন। সঠিকভাবে ব্যবহার করলে, এটি কোডের নিরাপত্তা এবং পাঠযোগ্যতা উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।