টাইপ গার্ডস কী এবং কিভাবে কাজ করে

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

266

টাইপ গার্ডস (Type Guards) হল TypeScript-এ এমন একটি কৌশল যা টাইপ সেফটি নিশ্চিত করতে ব্যবহৃত হয়, বিশেষত যখন আপনি একটি ভেরিয়েবল বা আর্গুমেন্টের টাইপ নিশ্চিত করতে চান। টাইপ গার্ডের মাধ্যমে আপনি TypeScript কম্পাইলারকে বল можете যে, কিছু শর্তের ভিত্তিতে একটি ভেরিয়েবলের টাইপ পরিবর্তিত হতে পারে এবং এটি কোডের সঠিক কাজ নিশ্চিত করতে সাহায্য করে।

টাইপ গার্ডস মূলত টাইপ চেকিং এবং টাইপ narrowing এর জন্য ব্যবহৃত হয়, অর্থাৎ একটি ভেরিয়েবলের টাইপ সঠিকভাবে চিহ্নিত করা এবং তখন তার উপর নির্ভর করে কোডকে আরও নির্ভরযোগ্য ও টাইপ সেফ করা।


১. টাইপ গার্ডস কী?

টাইপ গার্ড একটি শর্তাবলী (conditional) অভ্যন্তরীণ বা বাহ্যিক কন্ডিশন যা টাইপ স্ক্রিপ্টকে বলার সুযোগ দেয়, একটি ভেরিয়েবল কোনো নির্দিষ্ট টাইপের হবে কি না। এটি টাইপ চেকিং এবং টাইপ narrowing প্রক্রিয়ার একটি অংশ হিসেবে কাজ করে।

টাইপ গার্ড ব্যবহার করলে TypeScript কম্পাইলার টাইপের উপর আরও নিখুঁত অনুমান করতে পারে এবং সেই অনুযায়ী কোড সম্পাদন করতে পারে।


২. টাইপ গার্ডস ব্যবহার করা

TypeScript-এ টাইপ গার্ড ব্যবহারের জন্য বেশ কিছু কৌশল রয়েছে, এর মধ্যে রয়েছে:

  • typeof অপারেটর: প্রিমিটিভ টাইপ যেমন string, number, boolean ইত্যাদি চেক করার জন্য।
  • instanceof অপারেটর: অবজেক্ট টাইপ যেমন Date, Array, ইত্যাদি চেক করার জন্য।
  • ইউনিয়ন টাইপ এবং কাস্টম টাইপ গার্ড: একাধিক টাইপের মধ্যে টাইপ গার্ড প্রযোজ্য করা।

৩. typeof অপারেটর

typeof অপারেটরটি টাইপ গার্ডে ব্যবহৃত হয় যখন আপনি প্রিমিটিভ টাইপ চেক করতে চান, যেমন string, number, boolean ইত্যাদি। এটি TypeScript-কে জানান দেয় যে, যখন ভেরিয়েবলটি নির্দিষ্ট টাইপের হয়, তখন আপনি সেটির সাথে নির্দিষ্ট কাজ করতে পারেন।

উদাহরণ:

function printLength(value: string | number): void {
  if (typeof value === "string") {
    // value এখানে string হবে
    console.log(value.length);  // Safe: string-এর length প্রপার্টি আছে
  } else {
    // value এখানে number হবে
    console.log(value.toFixed(2));  // Safe: number-এর toFixed method আছে
  }
}

printLength("Hello, TypeScript!");  // Output: 19
printLength(42);  // Output: 42.00

এখানে typeof value === "string" টাইপ গার্ড ব্যবহার করা হয়েছে, যা TypeScript-কে বলছে যে যখন value একটি string হয়, তখন এটি length প্রপার্টি সহ কাজ করতে পারে, এবং যখন value একটি number হয়, তখন toFixed() মেথড ব্যবহার করা যেতে পারে।


৪. instanceof অপারেটর

instanceof অপারেটরটি অবজেক্ট টাইপ চেক করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে ক্লাসের ইনস্ট্যান্স চেক করতে সাহায্য করে। instanceof টাইপ গার্ড সাধারণত অবজেক্ট বা ক্লাস ভিত্তিক টাইপের জন্য ব্যবহৃত হয়।

উদাহরণ:

class Dog {
  bark() {
    console.log("Woof!");
  }
}

class Cat {
  meow() {
    console.log("Meow!");
  }
}

function makeSound(animal: Dog | Cat) {
  if (animal instanceof Dog) {
    animal.bark();  // Safe: animal is a Dog
  } else {
    animal.meow();  // Safe: animal is a Cat
  }
}

const dog = new Dog();
const cat = new Cat();

makeSound(dog);  // Output: Woof!
makeSound(cat);  // Output: Meow!

এখানে instanceof Dog টাইপ গার্ডটি animal ভেরিয়েবলকে Dog ক্লাসের একটি ইনস্ট্যান্স হিসেবে চিহ্নিত করে, যার ফলে আমরা bark() মেথড ব্যবহার করতে পারি। অন্যদিকে, Cat ইনস্ট্যান্সের ক্ষেত্রে meow() মেথড ব্যবহৃত হয়।


৫. কাস্টম টাইপ গার্ড (Custom Type Guards)

TypeScript আপনাকে কাস্টম টাইপ গার্ড তৈরি করার সুবিধাও দেয়। কাস্টম টাইপ গার্ড সাধারণত একটি ফাংশন যা টাইপ চেক করে এবং একটি type is প্যাটার্ন রিটার্ন করে।

উদাহরণ:

function isDog(animal: Dog | Cat): animal is Dog {
  return (animal as Dog).bark !== undefined;
}

function makeSound(animal: Dog | Cat) {
  if (isDog(animal)) {
    animal.bark();  // Safe: animal is a Dog
  } else {
    animal.meow();  // Safe: animal is a Cat
  }
}

const dog = new Dog();
const cat = new Cat();

makeSound(dog);  // Output: Woof!
makeSound(cat);  // Output: Meow!

এখানে isDog একটি কাস্টম টাইপ গার্ড ফাংশন, যা নির্ধারণ করে যে একটি animal কি Dog টাইপের, এবং animal is Dog টাইপ গার্ডের মাধ্যমে এটি নিশ্চিত করে।


৬. টাইপ গার্ডসের উপকারিতা

  • টাইপ সেফটি উন্নত করা: টাইপ গার্ডস আপনাকে নিশ্চিত করে যে আপনি শুধু সঠিক টাইপের সাথে কাজ করছেন।
  • কম্পাইল টাইমে ত্রুটি আটকানো: টাইপ গার্ডসের মাধ্যমে TypeScript কম্পাইলার runtime-এ যে কোন ত্রুটি প্রতিরোধ করতে পারে, কারণ টাইপ গার্ডগুলো টাইপ চেকিংয়ের সময় কাজ করে।
  • কোডের পাঠযোগ্যতা বাড়ানো: টাইপ গার্ডগুলো কোডকে পরিষ্কার ও বোঝার জন্য সহজ করে তোলে, বিশেষত যখন একাধিক টাইপের মধ্যে সঠিক টাইপ নির্বাচন করতে হয়।

সারাংশ

টাইপ গার্ডস TypeScript-এ টাইপ সেফটি এবং কোডের নির্ভরযোগ্যতা নিশ্চিত করার জন্য একটি গুরুত্বপূর্ণ টুল। এটি টাইপ narrowing এবং টাইপ চেকিংয়ের মাধ্যমে কোডকে আরও সঠিক এবং শক্তিশালী করে তোলে। typeof, instanceof, এবং কাস্টম টাইপ গার্ডের মাধ্যমে আপনি টাইপের সঠিকতা নিশ্চিত করতে পারেন, যা TypeScript-কে আরও উন্নত এবং টাইপ সেফ ফিচার প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...