স্ট্রাকচারাল টাইপ সিস্টেম

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

260

স্ট্রাকচারাল টাইপ সিস্টেম TypeScript এর একটি মৌলিক ধারণা, যা টাইপ চেকিংয়ের ক্ষেত্রে টাইপের কাঠামো (structure) বা গঠনকে প্রধান হিসেবে নেয়, অর্থাৎ কোন অবজেক্টের প্রপার্টি ও তার টাইপ কীভাবে গঠন করা হয়েছে, তা দেখে টাইপ চেকিং করা হয়। এটি ডাক টাইপিং (Duck Typing) নামে পরিচিত, যেখানে "If it looks like a duck and quacks like a duck, it must be a duck" এই প্রবাদটি মান্য করা হয়।

TypeScript এর স্ট্রাকচারাল টাইপ সিস্টেমের মাধ্যমে, আপনি যদি দুটি অবজেক্টে একই গঠন বা কাঠামো (structure) থাকে, তবে TypeScript তাদের একই টাইপ হিসেবে মান্য করে, এমনকি তাদের নাম বা টাইপ আলাদা হলেও।


স্ট্রাকচারাল টাইপ সিস্টেমের মৌলিক ধারণা

স্ট্রাকচারাল টাইপিং হল এমন একটি পদ্ধতি, যেখানে টাইপের তুলনা এনক্যাপসুলেশন বা অবজেক্টের কন্টেন্ট (বিষয়বস্তু) দ্বারা করা হয়, অথবা ফাংশনের সিগনেচার দ্বারা, টাইপের নামের উপর ভিত্তি না করে। এর মানে হল যে, দুটি আলাদা টাইপ, যদি একই স্ট্রাকচার (গঠন) থাকে, তবে TypeScript তাদেরকে সমান বলে গণ্য করবে।

উদাহরণ:

interface Person {
  name: string;
  age: number;
}

const john = { name: "John", age: 30 };
const jane = { name: "Jane", age: 25 };

function greet(person: Person) {
  console.log(`Hello, ${person.name}`);
}

greet(john);  // Works fine
greet(jane);  // Works fine

এখানে, john এবং jane উভয়েরই একই গঠন রয়েছে, তাদের নাম এবং বয়স। TypeScript তাদের একই টাইপ হিসেবে মান্য করেছে, কারণ তাদের গঠন Person ইন্টারফেসের সাথে মিলে যাচ্ছে।


স্ট্রাকচারাল টাইপিং এর বৈশিষ্ট্য

  1. টাইপের গঠন দেখেই তুলনা করা হয়: TypeScript এর স্ট্রাকচারাল টাইপ সিস্টেমে, দুটি অবজেক্টের প্রপার্টির নাম এবং টাইপ দেখে তাদের মধ্যে সমতা নির্ধারণ করা হয়।
  2. অবজেক্টের কাঠামো সমান হলে টাইপ একে অপরকে মান্য করে: যদি দুটি অবজেক্টের কাঠামো একই হয়, তবে TypeScript তাদেরকে একই টাইপ হিসেবে গণ্য করে।
  3. টাইপের নামের সাথে কোন সম্পর্ক নেই: স্ট্রাকচারাল টাইপ সিস্টেমে টাইপের নাম একটি বড় ব্যাপার নয়। যদি দুটি অবজেক্টের কাঠামো (structure) একই হয়, তবে TypeScript তাদেরকে সমান বলে গণ্য করবে।

স্ট্রাকচারাল টাইপ সিস্টেমের উদাহরণ

উদাহরণ ১: স্ট্রাকচারাল টাইপিং

interface Animal {
  name: string;
  sound: string;
}

const dog = { name: "Dog", sound: "Bark" };
const cat = { name: "Cat", sound: "Meow" };

function makeSound(animal: Animal) {
  console.log(`${animal.name} says ${animal.sound}`);
}

makeSound(dog); // Output: Dog says Bark
makeSound(cat); // Output: Cat says Meow

এখানে, dog এবং cat এর গঠন Animal ইন্টারফেসের সাথে মেলে, তাই TypeScript তাদেরকে একই টাইপ হিসেবে গণ্য করেছে। তাদের নাম এবং সাউন্ড প্রপার্টি একই ধরনের টাইপ ধারণ করে, যদিও তাদের নাম আলাদা।

উদাহরণ ২: স্ট্রাকচারাল টাইপিং এর মাধ্যমে কমপ্লেক্স অবজেক্ট

interface Employee {
  name: string;
  age: number;
  position: string;
}

const emp1 = { name: "John", age: 28, position: "Developer" };
const emp2 = { name: "Jane", age: 32, position: "Manager" };

function showEmployeeDetails(employee: Employee) {
  console.log(`${employee.name} is a ${employee.position}`);
}

showEmployeeDetails(emp1); // Output: John is a Developer
showEmployeeDetails(emp2); // Output: Jane is a Manager

এখানে emp1 এবং emp2 এর গঠন Employee ইন্টারফেসের সাথে মিলে যাচ্ছে, তাই TypeScript তাদেরকে একই টাইপ হিসেবে গণ্য করছে, যদিও তারা ভিন্ন ভিন্ন অবজেক্ট।


স্ট্রাকচারাল টাইপিং এর সঙ্গে নেমস্পেস সম্পর্কিত উদাহরণ

TypeScript এ স্ট্রাকচারাল টাইপিং তখনও কাজ করে যখন টাইপগুলোর নাম আলাদা থাকে, যতক্ষণ না তাদের কাঠামো এক। এখানে একটি উদাহরণ দেওয়া হলো:

interface Car {
  wheels: number;
  engine: string;
}

interface Vehicle {
  wheels: number;
  engine: string;
}

const car: Car = { wheels: 4, engine: "V8" };
const vehicle: Vehicle = { wheels: 4, engine: "V8" };

function drive(vehicle: Vehicle) {
  console.log(`Driving a vehicle with ${vehicle.wheels} wheels and a ${vehicle.engine} engine.`);
}

drive(car);  // Output: Driving a vehicle with 4 wheels and a V8 engine.

এখানে Car এবং Vehicle ইন্টারফেসের নাম আলাদা, তবে গঠন (structure) এক, তাই TypeScript উভয়কেই সমান টাইপ হিসেবে গণ্য করেছে এবং car অবজেক্টকে drive ফাংশনে পাস করা হয়েছে।


TypeScript এর স্ট্রাকচারাল টাইপ সিস্টেম আপনাকে টাইপের নামের পরিবর্তে টাইপের গঠন বা কাঠামো দিয়ে টাইপ চেকিং করার সুযোগ দেয়। এটি TypeScript কে অনেক বেশি নমনীয় এবং শক্তিশালী করে তোলে, কারণ আপনি কেবল নির্দিষ্ট প্রপার্টি এবং টাইপের মেলবন্ধন দিয়ে টাইপ চেক করতে পারবেন। এর মাধ্যমে কোড আরো বেশি পঠনযোগ্য, উন্নত এবং নির্ভরযোগ্য হয়।

Content added By
Promotion

Are you sure to start over?

Loading...