Enums (এনামস) TypeScript-এ একটি শক্তিশালী কনসেপ্ট যা আপনাকে নির্দিষ্ট মানগুলোর একটি সেট সংজ্ঞায়িত করতে সহায়তা করে। TypeScript এ স্ট্রিং Enums এবং নিউমেরিক Enums দুটি ধরণের Enums ব্যবহৃত হয়। এই দুটি ধরনের Enum-এর মধ্যে কিছু মূল পার্থক্য রয়েছে এবং প্রতিটি ধরন ব্যবহার করার ক্ষেত্রেও কিছু নির্দিষ্ট সুবিধা রয়েছে।
১. নিউমেরিক Enums
নিউমেরিক Enums হল TypeScript এর ডিফল্ট ধরনের Enums, যেখানে প্রতিটি মান একটি সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়। আপনি এই মানগুলোর জন্য কাস্টম সংখ্যা দিতে পারেন বা ডিফল্টভাবে সংখ্যা ইন্সক্রিমেন্ট (বৃদ্ধি) করে অ্যাসাইন করা হয়।
উদাহরণ:
enum Direction {
Up = 1,
Down,
Left,
Right
}
let move: Direction = Direction.Up;
console.log(move); // Output: 1
এখানে:
Up = 1- প্রথম মানটি ১ দিয়ে শুরু করা হয়েছে।Down,Left, এবংRightমানগুলি স্বয়ংক্রিয়ভাবে ২, ৩, ৪ মান পাবে, কারণ টাইপস্ক্রিপ্ট সেগুলোর মান ইনক্রিমেন্ট করে।
কাস্টম সংখ্যার মান নির্ধারণ:
enum Direction {
Up = 10,
Down = 20,
Left = 30,
Right = 40
}
let move: Direction = Direction.Left;
console.log(move); // Output: 30
এখানে, প্রতিটি মানের জন্য কাস্টম সংখ্যা প্রদান করা হয়েছে।
নিউমেরিক Enums এর সুবিধা:
- স্পেসিফিক সংখ্যার মান দেওয়া সম্ভব হয়।
- এনামটির মান পরবর্তী মেম্বার থেকে সংখ্যা বাড়ানোর জন্য ইনক্রিমেন্ট করা যায়, যা কোডকে আরো স্বচ্ছ এবং সহজবোধ্য করে।
২. স্ট্রিং Enums
স্ট্রিং Enums হল এমন Enums, যেখানে প্রতিটি মান একটি স্ট্রিং ডেটা টাইপের হয়। এটি যখন স্পষ্ট মানের প্রয়োজন হয়, যেমন কিছু স্থায়ী কনস্ট্যান্ট ভ্যালু যা স্ট্রিং হিসেবে চিহ্নিত করা যায়, তখন এটি ব্যবহৃত হয়।
উদাহরণ:
enum Color {
Red = "RED",
Green = "GREEN",
Blue = "BLUE"
}
let favoriteColor: Color = Color.Green;
console.log(favoriteColor); // Output: "GREEN"
এখানে, Color একটি স্ট্রিং Enum যেটির প্রতিটি মান একটি স্ট্রিং "RED", "GREEN", এবং "BLUE" হিসেবে নির্ধারণ করা হয়েছে।
স্ট্রিং Enums এর সুবিধা:
- কোডে স্পষ্ট এবং পাঠযোগ্য মান প্রদানের সুবিধা পাওয়া যায়।
- স্ট্রিং ভ্যালু ব্যবহার করলে নাম এবং মানের মধ্যে আরো স্পষ্ট সম্পর্ক প্রতিষ্ঠিত হয়।
৩. স্ট্রিং এবং নিউমেরিক Enums এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | নিউমেরিক Enum | স্ট্রিং Enum |
|---|---|---|
| মান | প্রতিটি মান একটি সংখ্যার সাথে যুক্ত। (ডিফল্টভাবে ০ দিয়ে শুরু হয়) | প্রতিটি মান একটি স্ট্রিং এর সাথে যুক্ত। |
| ডিফল্ট ইনক্রিমেন্ট | ডিফল্টভাবে মানগুলো স্বয়ংক্রিয়ভাবে ইনক্রিমেন্ট হয়। | কোনো ইনক্রিমেন্ট পদ্ধতি নেই, আপনাকে স্পষ্টভাবে মান প্রদান করতে হবে। |
| ব্যবহার | সাধারণত যখন সংখ্যার সাথে কাজ করা প্রয়োজন (যেমন: অবস্থান, সূচক ইত্যাদি)। | যখন স্পষ্ট, পাঠযোগ্য এবং নির্দিষ্ট মান ব্যবহার করা প্রয়োজন। |
| ফলাফল | সংখ্যার মান প্রদান করে। | স্ট্রিং মান প্রদান করে। |
৪. ইউজার ফ্রেন্ডলি ম্যানিপুলেশন (Reverse Mapping)
নিউমেরিক Enum এর ক্ষেত্রে আপনি reverse mapping করতে পারেন, মান থেকে নাম বের করতে পারেন। কিন্তু স্ট্রিং Enum এর ক্ষেত্রে reverse mapping সম্ভব নয়, কারণ এখানে সংখ্যা ব্যবহৃত হয় না।
উদাহরণ (Reverse Mapping):
enum Direction {
Up = 1,
Down,
Left,
Right
}
let directionName = Direction[2];
console.log(directionName); // Output: "Down"
এখানে, আমরা Direction[2] ব্যবহার করে মান থেকে নাম বের করেছি। তবে, স্ট্রিং Enum এর ক্ষেত্রে এটি কাজ করবে না, কারণ সেখানে reverse mapping সম্ভব নয়।
সারাংশ
- নিউমেরিক Enum সাধারণত এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে একটি সিস্টেমে সংখ্যা দিয়ে মান নির্ধারণ করতে হয় এবং স্বয়ংক্রিয়ভাবে ইনক্রিমেন্ট করা সম্ভব।
- স্ট্রিং Enum ব্যবহৃত হয় যখন প্রতিটি মানের জন্য একটি স্পষ্ট, পাঠযোগ্য স্ট্রিং নির্ধারণ করা প্রয়োজন। এটি বিশেষ করে কনস্ট্যান্ট মানগুলোকে আরও পরিষ্কারভাবে উপস্থাপন করে।
উপরে দেয়া উদাহরণ এবং পার্থক্যগুলোর মাধ্যমে আপনি TypeScript এর স্ট্রিং এবং নিউমেরিক Enums এর সুবিধা এবং কিভাবে এগুলি ব্যবহার করা হয়, তা আরও ভালোভাবে বুঝতে পারবেন।
Read more