ইন্টারফেস এবং টাইপ ইন্টারফেস

TypeScript মডেলিং এবং ডেটা স্ট্রাকচার - টাইপস্ক্রিপ্ট (Typescript) - Web Development

303

TypeScript-এ ইন্টারফেস এবং টাইপ ইন্টারফেস উভয়ই ডেটা শেপ বা স্ট্রাকচার সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। তবে তাদের ব্যবহারের মধ্যে কিছু পার্থক্য এবং ক্ষেত্রভেদে উপকারিতা রয়েছে। এই টিউটোরিয়ালে আমরা ইন্টারফেস এবং টাইপ ইন্টারফেস এর মধ্যে পার্থক্য এবং তাদের ব্যবহার বিস্তারিতভাবে আলোচনা করব।


১. ইন্টারফেস (Interface)

ইন্টারফেস TypeScript-এ এমন একটি গঠনগত ডেটা টাইপ যা ক্লাস বা অবজেক্টের জন্য প্রোপার্টি এবং মেথডের একটি কন্ট্রাক্ট (চুক্তি) নির্ধারণ করে। আপনি যখন একটি ইন্টারফেস তৈরি করেন, তখন এটি একটি স্ট্রাকচার ডিফাইন করে যা ক্লাস বা অবজেক্ট মেনে চলবে।

উদাহরণ:

interface Person {
  name: string;
  age: number;
  greet(): void;
}

const person1: Person = {
  name: "Alice",
  age: 25,
  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
};

person1.greet(); // Output: Hello, my name is Alice

এখানে Person একটি ইন্টারফেস যা একটি অবজেক্টের জন্য name, age প্রোপার্টি এবং greet মেথডের কাঠামো নির্ধারণ করছে। person1 ইন্টারফেসটি অনুসরণ করে তৈরি করা হয়েছে।

ইন্টারফেসের সুবিধা:

  • এক্সটেনশন: একাধিক ইন্টারফেস একত্রে এক্সটেন্ড করা যেতে পারে।
  • ক্লাসে প্রয়োগ: ইন্টারফেস একটি ক্লাসে প্রয়োগ করা যায়, যেখানে ক্লাস সেই ইন্টারফেসের সবগুলো মেথড ও প্রোপার্টি প্রদান করতে বাধ্য।
  • কমপ্লেক্স টাইপ ডিফাইন করা: বড় এবং জটিল টাইপ স্ট্রাকচার সহজেই সংজ্ঞায়িত করা যায়।

২. টাইপ ইন্টারফেস (Type Interface)

টাইপ ইন্টারফেস কোনো ইন্টারফেসের মতোই ডেটা টাইপ বা স্ট্রাকচার সংজ্ঞায়িত করতে ব্যবহৃত হয়, তবে এখানে টাইপ অ্যালিয়াস ব্যবহার করা হয়। টাইপ এবং ইন্টারফেস প্রায় একই কাজ করে, কিন্তু তাদের কিছু পার্থক্য রয়েছে, বিশেষত এক্সটেনশন এবং মর্জিং এর ক্ষেত্রে।

উদাহরণ:

type Person = {
  name: string;
  age: number;
  greet(): void;
};

const person2: Person = {
  name: "Bob",
  age: 30,
  greet() {
    console.log(`Hi, I'm ${this.name}`);
  }
};

person2.greet(); // Output: Hi, I'm Bob

এখানে Person একটি টাইপ অ্যালিয়াস যা name, age প্রোপার্টি এবং greet মেথড ধারণ করে। person2 টাইপটি অনুসরণ করে তৈরি করা হয়েছে।

টাইপ ইন্টারফেসের সুবিধা:

  • একটি ফাংশন বা ভেরিয়েবল টাইপ হিসেবে ব্যবহার: টাইপ দিয়ে আপনি শুধু অবজেক্ট টাইপই নয়, ফাংশন বা অ্যারের টাইপও ডিফাইন করতে পারেন।
  • একাধিক টাইপ একত্রিত করা: টাইপের মাধ্যমে ইউনিয়ন (union) বা ইন্টারসেকশন (intersection) টাইপ তৈরি করা সম্ভব।

৩. টাইপ এবং ইন্টারফেসের মধ্যে পার্থক্য

TypeScript-এ টাইপ এবং ইন্টারফেস প্রায় সমান কাজ করে, তবে তাদের মধ্যে কিছু পার্থক্য রয়েছে। নিচে তাদের মধ্যে প্রধান পার্থক্যগুলোর আলোচনা করা হলো:

১. এক্সটেনশন (Extending)

  • ইন্টারফেস একাধিক ইন্টারফেস একসাথে এক্সটেন্ড (extend) করতে পারে। এটি মর্জিং (Merging) সাপোর্ট করে, যার মানে একই নামের ইন্টারফেস একাধিকবার ডিফাইন করা সম্ভব এবং TypeScript তাদের একত্রে মিশিয়ে দেয়।

    interface Animal {
      name: string;
    }
    
    interface Dog extends Animal {
      breed: string;
    }
    
    const myDog: Dog = { name: "Buddy", breed: "Golden Retriever" };
    
  • টাইপ একাধিক টাইপ একসাথে মিশাতে পারে, তবে এটি মর্জিং সাপোর্ট করে না। এর মানে হল যে, যদি একই নামের টাইপ অ্যালিয়াস ঘোষণা করা হয়, তবে তারা ওভাররাইড হয়ে যাবে।

    type Animal = {
      name: string;
    };
    
    type Dog = Animal & { breed: string };
    
    const myDog: Dog = { name: "Buddy", breed: "Golden Retriever" };
    

২. মর্জিং (Merging)

  • ইন্টারফেস একই নামের একাধিক ডিফিনিশন একত্রে মিশিয়ে দিতে পারে। এটি ডিক্লারেটিভ মর্জিং (declarative merging) হিসেবে পরিচিত।

    interface Person {
      name: string;
    }
    
    interface Person {
      age: number;
    }
    
    const person: Person = { name: "Alice", age: 25 }; // No error, merging happens
    
  • টাইপ মর্জিং সাপোর্ট করে না, যদি আপনি একই নামের টাইপ দুইবার ঘোষণা করেন তবে তা কম্পাইল টাইম এরর দিবে।

    type Person = {
      name: string;
    };
    
    // Error: Duplicate identifier 'Person'.
    type Person = {
      age: number;
    };
    

৩. টাইপ এবং ইন্টারফেসের ব্যবহার ক্ষেত্রে পার্থক্য

  • ইন্টারফেস সাধারণত অবজেক্ট, ক্লাস বা ফাংশনের স্ট্রাকচার ডিফাইন করার জন্য ব্যবহার হয়।
  • টাইপ আরও জেনেরিক এবং ফাংশন, ইউনিয়ন টাইপ, বা ইন্টারসেকশন টাইপ ডিফাইন করার জন্য উপযুক্ত।

৪. কোনটি ব্যবহার করবেন?

  • আপনি যখন অবজেক্টের স্ট্রাকচার বা ক্লাসের জন্য কন্ট্রাক্ট (contract) তৈরি করতে চান, তখন ইন্টারফেস ব্যবহার করা সবচেয়ে ভাল।
  • আপনি যদি কাস্টম টাইপ তৈরি করতে চান, যেমন ইউনিয়ন টাইপ বা ফাংশন টাইপ, তবে টাইপ অ্যালিয়াস (type alias) ব্যবহার করা উত্তম।

সারাংশ

ইন্টারফেস এবং টাইপ TypeScript-এ অবজেক্টের স্ট্রাকচার বা টাইপ সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। যদিও তাদের কাজ প্রায় সমান, তবে কিছু পার্থক্য রয়েছে যেমন মর্জিং, এক্সটেনশন, এবং টাইপের ব্যবহার। সাধারণত ইন্টারফেস ক্লাস ও অবজেক্টের জন্য এবং টাইপ আরও জেনেরিক টাইপ ডিফাইন করার জন্য ব্যবহৃত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...