Template Literal Types

TypeScript Advanced Types - টাইপস্ক্রিপ্ট (Typescript) - Web Development

324

Template Literal Types TypeScript-এর একটি শক্তিশালী ফিচার, যা স্ট্রিং টাইপের কাস্টম প্যাটার্ন তৈরি করতে সাহায্য করে। এটি আপনাকে স্ট্রিং টাইপগুলিকে একত্রিত করতে এবং কাস্টম স্ট্রিং টাইপ প্যাটার্ন তৈরি করতে সক্ষম করে। এই ফিচারটি template literals (স্ট্রিং টেমপ্লেট) এর মতো ব্যবহার হয়, কিন্তু টাইপ সিস্টেমে স্ট্রিং প্যাটার্নের ডাইনামিক টাইপগুলোকে রিপ্রেজেন্ট করতে।


১. Template Literal Types কী?

Template Literal Types ব্যবহার করে আপনি এক বা একাধিক স্ট্রিং টাইপের সমন্বয়ে নতুন স্ট্রিং টাইপ তৈরি করতে পারেন। এটি স্ট্রিং টেমপ্লেট লিটারাল কনসেপ্টের মতো কাজ করে, যেখানে আপনি ${} সিঙ্ক্স ব্যবহার করে টাইপ প্যারামিটার যোগ করতে পারেন।

এটি TypeScript 4.1 ভার্সন থেকে যুক্ত করা হয়েছে এবং এর মাধ্যমে আপনি ডাইনামিক স্ট্রিং টাইপ তৈরি করতে পারবেন, যা অনেক ক্ষেত্রে কোডকে আরও শক্তিশালী ও টাইপ সেফ করে।


২. Template Literal Types এর Sintax

Template Literal Types তৈরি করতে, স্ট্রিং টেমপ্লেটের মতো ${} সিঙ্ক্স ব্যবহার করা হয়। এখানে টাইপ প্যারামিটার হিসেবে স্ট্রিং বা অন্যান্য টাইপও ব্যবহার করা যেতে পারে।

উদাহরণ:

type Greeting = `Hello, ${string}!`;

const greetUser: Greeting = "Hello, John!"; // Valid
const greetAdmin: Greeting = "Hello, Admin!"; // Valid
const greetError: Greeting = "Hello, 123!";  // Valid
const greetInvalid: Greeting = "Hi, John!"; // Error: 'Hi' is not assignable to 'Hello, ${string}!'

এখানে, Greeting টাইপটি একটি স্ট্রিং টাইপ যেটি Hello, দিয়ে শুরু হবে এবং এরপর একটি string টাইপের মান থাকবে। "Hello, John!" এবং "Hello, Admin!" টাইপ হিসেবে গ্রহণযোগ্য, কিন্তু "Hi, John!" গ্রহণযোগ্য নয় কারণ এটি Hello, এর সাথে মিলে না।


৩. Template Literal Types এবং Union Types

Template Literal Types ইউজ করে আপনি Union Types (যেমন একাধিক স্ট্রিং প্যাটার্ন) তৈরি করতে পারেন। এর মাধ্যমে আপনি একাধিক স্ট্রিং প্যাটার্ন তৈরি করে বিভিন্ন ভ্যালিড স্ট্রিং টাইপ প্রযোজ্য করতে পারবেন।

উদাহরণ:

type Status = "success" | "error";
type Message = `Operation was a ${Status}`;

const successMessage: Message = "Operation was a success"; // Valid
const errorMessage: Message = "Operation was a error";   // Valid
const invalidMessage: Message = "Operation was a failed"; // Error: 'failed' is not assignable to 'success' | 'error'

এখানে, Status টাইপ success বা error হতে পারে এবং Message টাইপ Operation was a ${Status} হিসেবে গঠিত, অর্থাৎ এটি success বা error এর সাথে মিলে এমন স্ট্রিং হবে।


৪. Template Literal Types এবং Typed Parameters

আপনি Template Literal Types এর সাথে টাইপ প্যারামিটার ব্যবহার করতে পারেন, যাতে ডাইনামিকভাবে নতুন স্ট্রিং টাইপ তৈরি করা যায়।

উদাহরণ:

type OrderStatus = "pending" | "shipped" | "delivered";

type OrderMessage<T extends OrderStatus> = `Your order is ${T}`;

const message1: OrderMessage<"pending"> = "Your order is pending";   // Valid
const message2: OrderMessage<"shipped"> = "Your order is shipped"; // Valid
const message3: OrderMessage<"delivered"> = "Your order is delivered"; // Valid
const message4: OrderMessage<"cancelled"> = "Your order is cancelled"; // Error: 'cancelled' is not assignable to 'pending' | 'shipped' | 'delivered'

এখানে, OrderMessage টাইপটি একটি জেনেরিক টাইপ যেটি OrderStatus এর একটি মানকে টাইপ প্যারামিটার হিসেবে গ্রহণ করে এবং একটি স্ট্রিং তৈরি করে। এটি pending, shipped, বা delivered এর সঙ্গে মিলে এমন স্ট্রিং রিটার্ন করবে, কিন্তু cancelled হবে না।


৫. Template Literal Types এবং Type Composition

এছাড়া, আপনি একাধিক Template Literal Types একত্রিত (compose) করে আরও জটিল টাইপ তৈরি করতে পারেন।

উদাহরণ:

type VehicleType = "car" | "truck";
type FuelType = "petrol" | "diesel";

type VehicleInfo = `${VehicleType} - ${FuelType}`;

const vehicle1: VehicleInfo = "car - petrol";  // Valid
const vehicle2: VehicleInfo = "truck - diesel"; // Valid
const vehicle3: VehicleInfo = "car - electric"; // Error: 'electric' is not assignable to 'petrol' | 'diesel'

এখানে VehicleInfo একটি নতুন টাইপ যা VehicleType এবং FuelType টাইপগুলো একত্রিত করে। এটি কেবলমাত্র নির্দিষ্ট মিলে যাওয়া স্ট্রিং গ্রহণ করবে, যেমন "car - petrol" অথবা "truck - diesel"


৬. ব্যবহারের সুবিধা

  • ডাইনামিক টাইপ তৈরি: Template Literal Types দিয়ে আপনি কাস্টম স্ট্রিং প্যাটার্ন তৈরি করতে পারবেন।
  • টাইপ সেফটি: এটি টাইপ সেফটি নিশ্চিত করতে সাহায্য করে, কারণ কম্পাইলার টাইপ চেকিং করবে এবং অবৈধ স্ট্রিং প্যাটার্নের ক্ষেত্রে ত্রুটি দেখাবে।
  • কোডের পুনঃব্যবহারযোগ্যতা: একাধিক স্ট্রিং প্যাটার্নের সমন্বয় করতে এবং একই কনসেপ্ট বিভিন্ন জায়গায় ব্যবহার করতে পারবেন।

সারাংশ

Template Literal Types TypeScript-এ স্ট্রিং টাইপের সুনির্দিষ্ট প্যাটার্ন তৈরি করার একটি শক্তিশালী পদ্ধতি। এটি টাইপের উপর নির্ভরশীল কোড তৈরি করতে সাহায্য করে, যেমন একটি নির্দিষ্ট স্ট্রিং টাইপের প্যাটার্ন তৈরি করা যা কেবল নির্দিষ্ট মান বা কনসট্রেইন্টে কাজ করবে। এর মাধ্যমে টাইপ সেফটি নিশ্চিত করা যায় এবং কোডের রিডেবিলিটি ও মেইনটেনেবিলিটি বৃদ্ধি পায়।

Content added By
Promotion

Are you sure to start over?

Loading...