কাস্টম টাইপ গার্ডস তৈরি করা

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

296

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

TypeScript-এ কিছু ইনবিল্ট টাইপ গার্ড রয়েছে যেমন typeof এবং instanceof। তবে আপনি কাস্টম টাইপ গার্ডস তৈরি করতে পারেন যাতে আরও কাস্টম শর্তে টাইপ চেকিং করা যায়।


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

টাইপ গার্ডস এমন একটি ফাংশন বা কোড ব্লক যা নিশ্চিত করে যে একটি ভেরিয়েবল নির্দিষ্ট টাইপের কিনা। TypeScript এই গার্ডের মাধ্যমে টাইপ ইনফারেন্স (Type Inference) সঠিকভাবে করতে পারে।


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

TypeScript-এ কাস্টম টাইপ গার্ড তৈরির জন্য আপনাকে is কিওয়ার্ড ব্যবহার করতে হবে। একটি কাস্টম টাইপ গার্ড ফাংশন তৈরি করার সময় টাইপ চেকিংয়ের জন্য একটি নির্দিষ্ট লজিক প্রয়োগ করা হয় এবং TypeScript কম্পাইলারকে নিশ্চিত করা হয় যে ভেরিয়েবলটি ওই টাইপে রূপান্তরিত হয়েছে।

কাস্টম টাইপ গার্ড তৈরি করার উদাহরণ

ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন আছে যেখানে দুটি ধরনের অবজেক্টের মধ্যে বিভাজন করতে হবে: Admin এবং User। আমরা কাস্টম টাইপ গার্ড ব্যবহার করে এই দুই ধরনের মধ্যে পার্থক্য করতে চাই।

  1. টাইপ ডিফিনেশন:
interface Admin {
  role: string;
  permissions: string[];
}

interface User {
  username: string;
  email: string;
}
  1. কাস্টম টাইপ গার্ড তৈরি করা:

এখন, আমরা একটি কাস্টম টাইপ গার্ড তৈরি করব যা চেক করবে যে একটি অবজেক্ট Admin টাইপের কিনা।

function isAdmin(user: Admin | User): user is Admin {
  return (user as Admin).permissions !== undefined;
}

এখানে isAdmin একটি কাস্টম টাইপ গার্ড ফাংশন যা একটি User অথবা Admin টাইপের অবজেক্ট নেবে এবং চেক করবে যদি permissions প্রপার্টি বিদ্যমান থাকে, তাহলে এটি Admin টাইপের হবে।

  1. টাইপ গার্ড ব্যবহার করা:

এখন আমরা এই কাস্টম টাইপ গার্ড ব্যবহার করে নিশ্চিত করতে পারি যে একটি অবজেক্ট Admin টাইপের কিনা।

const user1: Admin = { role: 'Manager', permissions: ['read', 'write'] };
const user2: User = { username: 'john_doe', email: 'john@example.com' };

function printUserInfo(user: Admin | User) {
  if (isAdmin(user)) {
    console.log(`Admin role: ${user.role}`);
    console.log(`Permissions: ${user.permissions.join(', ')}`);
  } else {
    console.log(`User username: ${user.username}`);
    console.log(`Email: ${user.email}`);
  }
}

printUserInfo(user1); // Admin role: Manager | Permissions: read, write
printUserInfo(user2); // User username: john_doe | Email: john@example.com

এখানে, isAdmin টাইপ গার্ড ব্যবহার করে আমরা নিশ্চিত করতে পারি যে user1 একটি Admin এবং user2 একটি User


টাইপ গার্ডের কার্যপদ্ধতি

টাইপ গার্ডস আপনার কোডে টাইপ চেক করার প্রক্রিয়াকে সহজ করে তোলে। যখন আপনি কাস্টম টাইপ গার্ড ব্যবহার করেন, TypeScript আপনার কোডের মধ্যে অটোমেটিক্যালি টাইপের সঠিকতা নিশ্চিত করে দেয়। টাইপ গার্ড কাস্টম লজিকের মাধ্যমে ইনফারেন্স (inference) সঠিকভাবে কাজ করে, ফলে টাইপ চেকিং আরো শক্তিশালী হয়।


আরও উদাহরণ

ধরা যাক, আপনার কাছে একটি টাইপ রয়েছে যা হতে পারে number অথবা string:

type StringOrNumber = string | number;

function isString(value: StringOrNumber): value is string {
  return typeof value === "string";
}

function isNumber(value: StringOrNumber): value is number {
  return typeof value === "number";
}

এখন, আমরা এই টাইপ গার্ড ব্যবহার করে একটি StringOrNumber ভেরিয়েবলের টাইপ চেক করতে পারব।

const value1: StringOrNumber = "Hello";
const value2: StringOrNumber = 42;

if (isString(value1)) {
  console.log(`String value: ${value1}`);
}

if (isNumber(value2)) {
  console.log(`Number value: ${value2}`);
}

এখানে isString এবং isNumber কাস্টম টাইপ গার্ড ব্যবহারের মাধ্যমে TypeScript জানে যে ভেরিয়েবলটি নির্দিষ্ট টাইপের। এর ফলে আপনি টাইপ সেফ কোড লিখতে পারবেন।


সারাংশ

TypeScript-এ কাস্টম টাইপ গার্ডস তৈরি করা কোডের টাইপ সেফটি বাড়ায় এবং টাইপ চেকিংয়ের মাধ্যমে বাগ কমাতে সাহায্য করে। is কিওয়ার্ড ব্যবহার করে আপনি আপনার কাস্টম টাইপ গার্ড তৈরি করতে পারেন এবং টাইপ ইনফারেন্সের মাধ্যমে কোডের মধ্যে টাইপ সঠিকভাবে চেক করতে পারেন। এটি TypeScript এর শক্তিশালী টাইপ সিস্টেমকে আরও কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...