জেনেরিক ফাংশন এবং ক্লাস তৈরি করা

TypeScript ফাংশন এবং জেনেরিকস - টাইপস্ক্রিপ্ট (Typescript) - Web Development

240

TypeScript এ জেনেরিকস (Generics) একটি শক্তিশালী ফিচার, যা আপনাকে একাধিক টাইপের জন্য পুনঃব্যবহারযোগ্য কোড লিখতে সাহায্য করে। এটি কোডের টাইপ সেফটি বজায় রেখে টাইপ পরিবর্তনযোগ্যতা এবং পুনঃব্যবহারযোগ্যতা নিশ্চিত করে। আপনি জেনেরিক ফাংশন এবং ক্লাস তৈরি করতে পারবেন, যা বিভিন্ন টাইপের ডেটার সাথে কাজ করতে পারে।


১. জেনেরিক ফাংশন (Generic Functions)

TypeScript এ জেনেরিক ফাংশন তৈরি করার জন্য <> এর মধ্যে টাইপ প্যারামিটার ব্যবহার করতে হয়। এই টাইপ প্যারামিটার ফাংশনের মধ্যে সেই টাইপের ডেটা মান নিয়ে কাজ করবে। এটি সাধারণত T, U, K ইত্যাদি নামে নামকরণ করা হয়, তবে আপনি ইচ্ছেমত নাম ব্যবহার করতে পারেন।

উদাহরণ: সাধারণ জেনেরিক ফাংশন

function identity<T>(value: T): T {
  return value;
}

let num = identity(10);    // num টাইপ হবে 'number'
let str = identity("Hello"); // str টাইপ হবে 'string'

এখানে:

  • identity একটি জেনেরিক ফাংশন, যা T টাইপ প্যারামিটার গ্রহণ করে এবং সেই টাইপের মান রিটার্ন করে।
  • T একটি টাইপ প্যারামিটার, যা ফাংশনের টাইপের উপর ভিত্তি করে পরে পরিবর্তিত হয়।
  • num এবং str ভেরিয়েবলগুলি যথাক্রমে number এবং string টাইপ হিসেবে ডিডাক্ট হয়।

আরও একটি উদাহরণ (ডেটা অ্যারে):

function getFirstElement<T>(arr: T[]): T {
  return arr[0];
}

let firstNumber = getFirstElement([1, 2, 3]); // firstNumber হবে 'number'
let firstString = getFirstElement(["a", "b", "c"]); // firstString হবে 'string'

এখানে, T টাইপ প্যারামিটারটি অ্যারে arr এর উপাদানের টাইপ অনুযায়ী পরিবর্তিত হয়।


২. জেনেরিক ক্লাস (Generic Classes)

TypeScript এ ক্লাসও জেনেরিক হতে পারে, অর্থাৎ আপনি ক্লাসের মধ্যে টাইপ প্যারামিটার ব্যবহার করতে পারেন যা সেই ক্লাসের ডেটা ম্যানিপুলেশন বা প্রপার্টির টাইপ নির্ধারণ করবে।

উদাহরণ: জেনেরিক ক্লাস

class Box<T> {
  private value: T;

  constructor(value: T) {
    this.value = value;
  }

  getValue(): T {
    return this.value;
  }
}

let numberBox = new Box(123);   // numberBox এর টাইপ হবে 'number'
let stringBox = new Box("Hello"); // stringBox এর টাইপ হবে 'string'

console.log(numberBox.getValue());  // আউটপুট: 123
console.log(stringBox.getValue());  // আউটপুট: Hello

এখানে:

  • Box একটি জেনেরিক ক্লাস, যা T টাইপ প্যারামিটার নেয়।
  • এই ক্লাসের মধ্যে value প্রপার্টি এবং getValue() মেথড রয়েছে, যা T টাইপের ডেটার সঙ্গে কাজ করে।

ক্লাসের মধ্যে একাধিক টাইপ প্যারামিটার ব্যবহার করা:

class Pair<K, V> {
  private key: K;
  private value: V;

  constructor(key: K, value: V) {
    this.key = key;
    this.value = value;
  }

  getKey(): K {
    return this.key;
  }

  getValue(): V {
    return this.value;
  }
}

let pair = new Pair<string, number>("age", 30);
console.log(pair.getKey());    // আউটপুট: age
console.log(pair.getValue());  // আউটপুট: 30

এখানে, Pair ক্লাসে দুটি টাইপ প্যারামিটার (K এবং V) ব্যবহার করা হয়েছে। key এবং value প্রপার্টিগুলি 각각 K এবং V টাইপের ডেটা ধারণ করবে।


৩. জেনেরিক ক্লাসের জন্য ডিফল্ট টাইপ (Default Types for Generics)

TypeScript এ আপনি জেনেরিক টাইপের জন্য ডিফল্ট টাইপও প্রদান করতে পারেন। এটি যখন টাইপ প্যারামিটার সরবরাহ করা না হয়, তখন ডিফল্ট টাইপটি ব্যবহৃত হবে।

উদাহরণ: ডিফল্ট টাইপ

class Container<T = string> {
  private value: T;

  constructor(value: T) {
    this.value = value;
  }

  getValue(): T {
    return this.value;
  }
}

let stringContainer = new Container("Hello, TypeScript!");
console.log(stringContainer.getValue()); // আউটপুট: Hello, TypeScript!

let numberContainer = new Container(100); // numberContainer টাইপ হবে 'number'
console.log(numberContainer.getValue());  // আউটপুট: 100

এখানে:

  • Container ক্লাসে T = string ডিফল্ট টাইপ ব্যবহার করা হয়েছে। তাই যদি T টাইপ প্যারামিটার না দেওয়া হয়, তবে এটি string টাইপ হিসেবে আচরণ করবে।

৪. জেনেরিক কনস্ট্রেইন্টস (Generic Constraints)

TypeScript এ আপনি জেনেরিক টাইপগুলোর উপর কিছু কনস্ট্রেইন্ট (constraints) প্রয়োগ করতে পারেন। অর্থাৎ, আপনি নির্দিষ্ট করতে পারেন যে জেনেরিক টাইপটি কোন বিশেষ শ্রেণী বা ইন্টারফেসের সাথে সামঞ্জস্যপূর্ণ হতে হবে।

উদাহরণ: কনস্ট্রেইন্ট ব্যবহার

interface Lengthwise {
  length: number;
}

function logLength<T extends Lengthwise>(item: T): void {
  console.log(item.length);
}

logLength("Hello");  // আউটপুট: 5
logLength([1, 2, 3]); // আউটপুট: 3

এখানে:

  • T extends Lengthwise দ্বারা আমরা নিশ্চিত করছি যে T টাইপের একটি length প্রপার্টি থাকতে হবে। সুতরাং, শুধু সেই টাইপগুলি এই ফাংশনে পাঠানো যাবে, যেগুলোর মধ্যে length প্রপার্টি আছে (যেমন, স্ট্রিং বা অ্যারে)।

উপসংহার

TypeScript এর জেনেরিকস ফিচার খুবই শক্তিশালী এবং এটি কোড পুনঃব্যবহারযোগ্যতা, টাইপ সেফটি এবং টাইপ ফ্লেক্সিবিলিটি প্রদান করে। আপনি জেনেরিক ফাংশন এবং ক্লাস তৈরি করে একাধিক টাইপের ডেটার সাথে কাজ করতে পারবেন এবং কোডকে আরও মডুলার এবং স্কেলেবল করতে পারবেন। TypeScript এর জেনেরিক ফিচার কোডের মধ্যে আরও পরিষ্কারতা, শক্তিশালী টাইপ চেকিং এবং উন্নত ডেভেলপমেন্ট এক্সপেরিয়েন্স প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...