TypeScript এ Intersection Types এবং Union Types দুটি গুরুত্বপূর্ণ ধারণা যা ডেটা টাইপের সংমিশ্রণ এবং একাধিক টাইপের মধ্যে কাজ করার ক্ষমতা প্রদান করে। এগুলি টাইপ সিস্টেমের ফ্লেক্সিবিলিটি বাড়ায় এবং বিভিন্ন ধরনের মানের মধ্যে সম্পর্ক বা যোগসূত্র স্থাপন করতে সাহায্য করে।
১. Union Types
Union Types আপনাকে একাধিক টাইপের মধ্যে নির্বাচন করতে দেয়, অর্থাৎ একটি ভ্যারিয়েবল একাধিক টাইপের মান ধারণ করতে পারে। এটি | (পাইপ) চিহ্ন দিয়ে দুটি বা তার বেশি টাইপকে একত্রিত করা হয়।
উদাহরণ: Union Types
let value: string | number;
value = "Hello"; // Valid
value = 42; // Valid
value = true; // Error: boolean is not assignable to 'string | number'
এখানে:
valueভ্যারিয়েবলটিstringঅথবাnumberটাইপের যে কোনো মান গ্রহণ করতে পারে। এটিstring | numberটাইপ দ্বারা সংজ্ঞায়িত।- তবে এটি যদি
booleanটাইপের মান গ্রহণ করার চেষ্টা করা হয়, তখন ত্রুটি হবে কারণbooleanএই ইউনিয়ন টাইপে অন্তর্ভুক্ত নয়।
আরেকটি উদাহরণ:
function display(value: string | number) {
console.log(value);
}
display("Hello, World!"); // Output: Hello, World!
display(100); // Output: 100
এখানে:
displayফাংশনটিstringঅথবাnumberটাইপের প্যারামিটার নেয় এবং সেটি কনসোলে প্রিন্ট করে।
২. Intersection Types
Intersection Types আপনাকে একাধিক টাইপকে একত্রিত করতে দেয়, অর্থাৎ একটি ভ্যারিয়েবল একাধিক টাইপের সমস্ত বৈশিষ্ট্য ধারণ করতে পারে। এটি & (অ্যাম্পারস্যান্ড) চিহ্ন দিয়ে বিভিন্ন টাইপকে একত্রিত করা হয়।
উদাহরণ: Intersection Types
interface Person {
name: string;
age: number;
}
interface Address {
street: string;
city: string;
}
type PersonWithAddress = Person & Address;
const individual: PersonWithAddress = {
name: "John",
age: 30,
street: "123 Main St",
city: "New York",
};
এখানে:
PersonএবংAddressদুটি আলাদা ইন্টারফেস এবংPersonWithAddressএকটি নতুন টাইপ যাPersonএবংAddressইন্টারফেসের সব বৈশিষ্ট্য ধারণ করে।individualভ্যারিয়েবলটিPersonWithAddressটাইপের একটি মান ধারণ করছে, যেখানেname,age,street, এবংcityসমস্ত প্রোপার্টি থাকতে হবে।
আরেকটি উদাহরণ:
interface Employee {
id: number;
department: string;
}
interface Manager {
level: string;
teamSize: number;
}
type ManagerWithEmployee = Employee & Manager;
const manager: ManagerWithEmployee = {
id: 101,
department: "HR",
level: "Senior",
teamSize: 10,
};
এখানে:
ManagerWithEmployeeএকটিEmployeeএবংManagerটাইপের মিশ্রণ, যা উভয়ের সব বৈশিষ্ট্য ধারণ করে।
৩. Union Types এবং Intersection Types এর পার্থক্য
Union Types:
|চিহ্ন দিয়ে একাধিক টাইপের মধ্যে নির্বাচন করা যায়।- একটি ভ্যারিয়েবল একটি টাইপের মধ্যে সীমাবদ্ধ থাকে, তবে সেটি বিভিন্ন টাইপের মান গ্রহণ করতে পারে।
- এটি একাধিক সম্ভাব্য মানের মধ্যে একটিকে নির্বাচন করার সুযোগ প্রদান করে।
উদাহরণ:
let value: string | number;
Intersection Types:
&চিহ্ন দিয়ে একাধিক টাইপের বৈশিষ্ট্যগুলিকে একত্রিত করা হয়।- একটি ভ্যারিয়েবল সমস্ত টাইপের বৈশিষ্ট্য ধারণ করতে সক্ষম হয়। এটি টাইপগুলির মিশ্রণ।
- Intersection types সাধারণত আরও শক্তিশালী এবং কম্পোজেবল, যেখানে একাধিক টাইপের বৈশিষ্ট্যগুলির সমন্বয়ে একটি নতুন টাইপ তৈরি হয়।
উদাহরণ:
type PersonWithAddress = Person & Address;
৪. Union এবং Intersection Types এর ব্যবহার
যখন Union Types ব্যবহার করবেন:
- যখন আপনার ভ্যারিয়েবলটি একাধিক টাইপের মধ্যে কোন একটি ধরতে পারে, এবং আপনাকে তাদের মধ্যে যেকোনো একটিকে গ্রহণ করতে হবে।
- উদাহরণস্বরূপ, যখন আপনি একটি ভ্যারিয়েবল যা স্ট্রিং বা সংখ্যার মধ্যে হতে পারে, প্রক্রিয়া করছেন।
যখন Intersection Types ব্যবহার করবেন:
- যখন আপনার টাইপগুলি একত্রিত করতে চান এবং আপনাকে তাদের সব বৈশিষ্ট্য রাখতে হবে।
- উদাহরণস্বরূপ, যদি আপনি এমন একটি টাইপ তৈরি করতে চান যা একাধিক ইন্টারফেসের সমস্ত বৈশিষ্ট্য ধারণ করে।
সারাংশ
TypeScript এর Union Types এবং Intersection Types অত্যন্ত শক্তিশালী টাইপিং কৌশল, যা ডেটার সাথে কার্যকরভাবে কাজ করার জন্য দারুণ উপকারী। Union types বিভিন্ন সম্ভাব্য টাইপের মধ্যে একটি নির্বাচন করার সুযোগ দেয়, যেখানে Intersection types বিভিন্ন টাইপের বৈশিষ্ট্যগুলো একত্রিত করে একটি শক্তিশালী নতুন টাইপ তৈরি করে।