TypeScript এ ইন্টারফেস (Interface) এবং টাইপ (Type) ব্যবহার করা হয় টাইপ সেফটি বজায় রাখতে এবং কোডের readability ও maintainability উন্নত করতে। যদিও ইন্টারফেস এবং টাইপ দুটোই খুবই কাছাকাছি, কিন্তু কিছু পার্থক্য রয়েছে। এখানে আমরা ইন্টারফেস এবং টাইপ এর ব্যবহারের বিস্তারিত আলোচনা করব।
১. ইন্টারফেস (Interface) কী?
ইন্টারফেস হল TypeScript এর একটি কনস্ট্রাক্ট যা একটি অবজেক্টের কাঠামো নির্ধারণ করে। এটি টাইপ সিস্টেমের অংশ হিসেবে কাজ করে এবং ডেভেলপারদের একে অপরের সাথে কাজ করার সময় নির্দিষ্ট কাঠামো অনুসরণ করতে সহায়তা করে।
ইন্টারফেসের স্নিপেট:
interface Person {
name: string;
age: number;
greet(): void;
}
const user: Person = {
name: "John",
age: 30,
greet() {
console.log(`Hello, ${this.name}`);
}
};
user.greet(); // Output: Hello, John
এখানে Person নামক একটি ইন্টারফেস তৈরি করা হয়েছে, যা একটি অবজেক্টের কাঠামো নির্ধারণ করে, এবং এটি name, age প্রপার্টি এবং greet মেথড সহ অবজেক্টকে বাধ্যতামূলক করে।
২. টাইপ (Type) কী?
টাইপ (Type) হলো TypeScript এর আরও একটি ফিচার যা টাইপের উপর বেশি নিয়ন্ত্রণ দেয়। টাইপের মাধ্যমে আপনি ভ্যালিড মানের কাঠামো নির্ধারণ করতে পারেন, যেমন একটি টাইপ হতে পারে একটি মৌলিক টাইপ (string, number, boolean), অথবা আপনি একটি ইউনিয়ন টাইপ, টাপল টাইপ, বা কোনও অবজেক্ট টাইপও তৈরি করতে পারেন।
টাইপের স্নিপেট:
type Person = {
name: string;
age: number;
greet(): void;
};
const user: Person = {
name: "Alice",
age: 25,
greet() {
console.log(`Hello, ${this.name}`);
}
};
user.greet(); // Output: Hello, Alice
এখানে Person টাইপ তৈরি করা হয়েছে, যা একটি অবজেক্টের কাঠামো নির্ধারণ করেছে ঠিক ইন্টারফেসের মতো। এটি name, age এবং greet প্রপার্টির সঙ্গে একটি অবজেক্টের কাঠামো তৈরি করে।
৩. ইন্টারফেস এবং টাইপের মধ্যে পার্থক্য
যদিও ইন্টারফেস এবং টাইপ অনেক ক্ষেত্রেই একে অপরের মতো কাজ করে, তবে কিছু মৌলিক পার্থক্য রয়েছে:
পার্থক্যগুলো:
এক্সটেনশন এবং এক্সপেনশন:
- ইন্টারফেস: একাধিক ইন্টারফেসকে একত্রিত করা যায়
extendsকিওয়ার্ড দিয়ে। - টাইপ: একাধিক টাইপকে একত্রিত করার জন্য
&অপারেটর ব্যবহার করা হয়।
ইন্টারফেস এক্সটেনশন:
interface Animal { name: string; } interface Dog extends Animal { breed: string; } const myDog: Dog = { name: "Rex", breed: "German Shepherd" };টাইপ এক্সটেনশন:
type Animal = { name: string; } type Dog = Animal & { breed: string; }; const myDog: Dog = { name: "Rex", breed: "German Shepherd" };- ইন্টারফেস: একাধিক ইন্টারফেসকে একত্রিত করা যায়
এক্সপ্রেশন:
- ইন্টারফেস: সাধারণত অবজেক্ট টাইপের জন্য ব্যবহৃত হয়।
- টাইপ: টাইপ এক্সপ্রেশনগুলো আরও ফ্লেক্সিবল, যেমন ইউনিয়ন টাইপ, টাপল টাইপ ইত্যাদি।
টাইপের উদাহরণ:
type StringOrNumber = string | number; const value: StringOrNumber = 42;ডিক্লারেশন মার্জিং (Declaration Merging):
- ইন্টারফেস: একই নামের একাধিক ইন্টারফেসকে মার্জ করা যায়।
- টাইপ: টাইপে ডিক্লারেশন মার্জিং সম্ভব নয়, অর্থাৎ একে একাধিকবার ডিফাইন করা সম্ভব নয়।
ইন্টারফেস মার্জিং উদাহরণ:
interface Person { name: string; } interface Person { age: number; } const user: Person = { name: "Bob", age: 30 };এখানে দুটি
Personইন্টারফেস মার্জ হয়ে একটি পূর্ণাঙ্গPersonটাইপ তৈরি হয়েছে।
৪. কখন ইন্টারফেস ব্যবহার করবেন?
- যখন আপনি অবজেক্ট টাইপের কাঠামো (structure) পরিষ্কারভাবে নির্ধারণ করতে চান এবং কোডে ডেভেলপারদের জন্য একটি পরিষ্কার কন্ট্রাক্ট তৈরি করতে চান।
- যখন আপনি ইন্টারফেস মার্জিং ব্যবহার করতে চান (যেহেতু এটি একাধিক ডিক্লারেশন মার্জ করতে সাহায্য করে)।
৫. কখন টাইপ ব্যবহার করবেন?
- যখন আপনাকে ইউনিয়ন টাইপ, টাপল টাইপ বা ফাংশন সিগনেচার যেমন আরো জটিল টাইপিং করতে হবে।
- যখন আপনি একটি একক টাইপ ডিফাইন করতে চান যা পুনঃব্যবহারযোগ্য।
- যখন আপনি একটি সাধারণ বা এডভান্সড কাস্টম টাইপ তৈরির প্রয়োজন হয়, যেমন Conditional Types।
উপসংহার
ইন্টারফেস (Interface) এবং টাইপ (Type) TypeScript এর টাইপ সিস্টেমের দুটি শক্তিশালী ফিচার। ইন্টারফেস সাধারণত অবজেক্ট কাঠামো সংজ্ঞায়িত করার জন্য ব্যবহৃত হয় এবং টাইপ একটু বেশি ফ্লেক্সিবল এবং কাস্টমাইজেবল হতে পারে, যার মাধ্যমে আপনি বিভিন্ন ধরনের কাস্টম টাইপ তৈরি করতে পারেন। সঠিক ব্যবহার সুনির্দিষ্ট প্রজেক্টের প্রয়োজন এবং ব্যবহারিক ক্ষেত্রে নির্ভর করবে।
Read more