TypeScript-এ ইউনিয়ন টাইপ (Union Type) এবং ইন্টারসেকশন টাইপ (Intersection Type) হল দুটি শক্তিশালী ফিচার, যা টাইপ সিস্টেমের মধ্যে অনেক বেশি ফ্লেক্সিবিলিটি এবং শক্তি যোগ করে। এগুলি টাইপের বিভিন্ন কম্বিনেশন বা মিশ্রণ তৈরিতে সাহায্য করে, যা আপনার কোডকে আরও শক্তিশালী, নিরাপদ, এবং পাঠযোগ্য করে তোলে।
১. ইউনিয়ন টাইপ (Union Type)
ইউনিয়ন টাইপ TypeScript-এ একটি টাইপ সিস্টেম ফিচার যা একাধিক টাইপকে একত্রিত করে। এটি বলে দেয় যে, একটি ভেরিয়েবল একাধিক টাইপের যেকোনো একটি ধারণ করতে পারে। একে | (পাইপ) চিহ্ন দিয়ে প্রকাশ করা হয়।
উদাহরণ:
let value: string | number;
value = "Hello, TypeScript!"; // Valid
value = 42; // Valid
value = true; // Error: boolean is not assignable to 'string | number'
উপরের উদাহরণে, value ভেরিয়েবলটি string অথবা number টাইপ হতে পারে। এটি ইউনিয়ন টাইপ হিসেবে পরিচিত।
ব্যবহার:
- যখন আপনি চান যে কোনো ভেরিয়েবল একাধিক সম্ভাব্য টাইপ ধারণ করতে পারে, তখন ইউনিয়ন টাইপ ব্যবহার করবেন।
- এই টাইপটি আপনাকে একাধিক টাইপের মধ্য থেকে নির্বাচনের সুযোগ দেয়, কিন্তু একে একসাথে ব্যবহার করতে পারবেন না।
২. ইন্টারসেকশন টাইপ (Intersection Type)
ইন্টারসেকশন টাইপ TypeScript-এ এমন একটি ফিচার যা দুটি বা তার বেশি টাইপকে একত্রিত করে একটি নতুন টাইপ তৈরি করে, যেখানে নতুন টাইপটি সমস্ত টাইপের সমস্ত প্রপার্টি ধারণ করবে। একে & (এম্পারস্যান্ড) চিহ্ন দিয়ে প্রকাশ করা হয়।
উদাহরণ:
type Person = {
name: string;
age: number;
};
type Employee = {
employeeId: string;
department: string;
};
type EmployeeDetails = Person & Employee;
const employee: EmployeeDetails = {
name: "John",
age: 30,
employeeId: "E1234",
department: "HR"
};
এখানে EmployeeDetails একটি ইন্টারসেকশন টাইপ, যা Person এবং Employee টাইপের সব প্রপার্টি ধারণ করে। অর্থাৎ, EmployeeDetails টাইপের একটি অবজেক্টে name, age, employeeId, এবং department চারটি প্রপার্টি থাকবে।
ব্যবহার:
- যখন আপনি চান যে একটি অবজেক্ট বা ভেরিয়েবল একাধিক টাইপের সমস্ত প্রপার্টি ধারণ করুক, তখন ইন্টারসেকশন টাইপ ব্যবহার করবেন।
- এটি একাধিক টাইপের সম্পূর্ণ সংমিশ্রণ প্রদান করে।
৩. ইউনিয়ন এবং ইন্টারসেকশন টাইপের তুলনা
| বৈশিষ্ট্য | ইউনিয়ন টাইপ (|) | ইন্টারসেকশন টাইপ (&) | |-----------------------|----------------------------------|------------------------------------| | প্রকৃতি | একাধিক টাইপের যেকোনো একটি টাইপ গ্রহণ করে | একাধিক টাইপের সমস্ত প্রপার্টি ধারণ করে | | উদ্দেশ্য | একাধিক টাইপের মধ্যে যেকোনো একটি টাইপ নির্বাচন করা | একাধিক টাইপের সব প্রপার্টি একত্রিত করা | | উদাহরণ | string | number | Person & Employee | | ভ্যালিডেশন | একটি টাইপ হতে পারে | সমস্ত টাইপের প্রপার্টি থাকতে হবে | | ব্যবহার | যখন ভেরিয়েবল একাধিক টাইপ ধারণ করতে পারে | যখন একটি অবজেক্ট বা টাইপ একাধিক টাইপের সব প্রপার্টি ধারণ করতে পারে |
৪. ইউনিয়ন এবং ইন্টারসেকশন টাইপের বাস্তব ব্যবহার
ইউনিয়ন টাইপের উদাহরণ:
ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা সংখ্যায় পরিসীমা যাচাই করবে এবং স্ট্রিং বা সংখ্যা গ্রহণ করবে:
function printLength(value: string | number): void {
if (typeof value === "string") {
console.log(`String length: ${value.length}`);
} else {
console.log(`Number value: ${value}`);
}
}
printLength("Hello, TypeScript!"); // String length: 19
printLength(42); // Number value: 42
এই ক্ষেত্রে, value ভেরিয়েবলটি string অথবা number হতে পারে, তাই আমরা যদি value স্ট্রিং হয়, তবে .length ব্যবহার করব, এবং যদি এটি সংখ্যা হয়, তবে সেই সংখ্যা মুদ্রণ করব।
ইন্টারসেকশন টাইপের উদাহরণ:
ধরা যাক, আপনি একটি ফাংশন তৈরি করতে চান যা Person এবং Employee টাইপের সব প্রপার্টি একত্রিত করে এবং সেগুলো একটি অবজেক্ট হিসেবে প্রক্রিয়া করবে:
type Person = {
name: string;
age: number;
};
type Employee = {
employeeId: string;
department: string;
};
type EmployeeDetails = Person & Employee;
function printEmployeeDetails(employee: EmployeeDetails): void {
console.log(`Name: ${employee.name}`);
console.log(`Age: ${employee.age}`);
console.log(`Employee ID: ${employee.employeeId}`);
console.log(`Department: ${employee.department}`);
}
const employee1: EmployeeDetails = {
name: "John",
age: 30,
employeeId: "E1234",
department: "HR"
};
printEmployeeDetails(employee1);
এখানে EmployeeDetails টাইপটি Person এবং Employee টাইপের সব প্রপার্টি ধারণ করে, এবং printEmployeeDetails ফাংশনটি সমস্ত প্রপার্টি মুদ্রণ করবে।
উপসংহার
TypeScript-এ ইউনিয়ন টাইপ এবং ইন্টারসেকশন টাইপ ব্যবহার করে আপনি টাইপ সিস্টেমে নমনীয়তা এবং শক্তিশালী চেকিং যোগ করতে পারেন। ইউনিয়ন টাইপ আপনাকে একাধিক টাইপের মধ্যে যেকোনো একটি টাইপ ব্যবহার করতে সাহায্য করে, আর ইন্টারসেকশন টাইপ একাধিক টাইপের সমস্ত প্রপার্টি একত্রিত করতে সাহায্য করে। এই দুটি ফিচার ব্যবহার করে কোডকে আরও শক্তিশালী এবং টাইপ সেফ করা সম্ভব।
Read more