TypeScriptAdvanced
Template Literal Types
template literal দিয়ে string টাইপ-স্তরের রচনা, union-এর সাথে combination ও real-world ব্যবহার — বাংলায়।
11টি অংশবাংলা ভাষায়
Template literal type হলো string টাইপের ভেতরে template literal (... ${...}) ব্যবহার — যার ফলে string টাইপ-স্তরে গঠিত হতে পারে।
মৌলিক ধারণা
type World = "world";
type Greeting = `hello ${World}`; // "hello world"
type UserId = `user_${number}`;
const u1: UserId = "user_42"; // ✅
// const u2: UserId = "guest"; // ❌
type Coordinates = `${number}, ${number}`;Union-এর সাথে Combination
type Vertical = "top" | "bottom";
type Horizontal = "left" | "right";
type Position = `${Vertical}-${Horizontal}`;
// "top-left" | "top-right" | "bottom-left" | "bottom-right"
const pos: Position = "top-right"; // ✅Intrinsic Modifier
Uppercase, Lowercase, Capitalize, Uncapitalize — এগুলো intrinsic utility যা string টাইপ বদলে দেয়।
type Id = `id_${number}`;
type UppercaseId = Uppercase<Id>; // `ID_${number}`
type EventType = "click" | "hover" | "scroll";
type HandlerName = `on${Capitalize<EventType>}`;
// "onClick" | "onHover" | "onScroll"
const handler: Record<HandlerName, () => void> = {
onClick: () => {},
onHover: () => {},
onScroll: () => {},
};Real-world ব্যবহার
// CSS-শৈলী key validation
type CssFont = `font-${"small" | "medium" | "large"}`;
// ইভেন্ট listener প্যাটার্ন
type EventNames = `on${Capitalize<EventType>}`;
function addListener(name: EventNames, fn: () => void): void {
// ...
}
addListener("onClick", () => console.log("click"));
// addListener("onDoubleClick", fn); // ❌ টাইপেই আটকায়জটিলতা সামলান
Template literal types string-কে বিস্তারিত ধরতে লাগে — ছোট ছোট union টাইপে ভেঙে combinations গড়ুন, নাহলে টাইপ explosion হয় (অনেক সম্ভাব্য দান বৃদ্ধি)।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।