Template literal types آپ کو دوسری types کو template میں interpolate کرکے نئی string literal types بنانے دیتے ہیں — type کی سطح پر string manipulation۔
ts
= ;
: = ;
: = ;
type Color = "red" | "blue";
type Shade = "light" | "dark";
type Variant = `${Shade}-${Color}`;
// "light-red" | "light-blue" | "dark-red" | "dark-blue" — all combinations
کمپائلر unions کے ہر combination کو expand کرتا ہے — valid string keys (CSS classes، event names، route patterns) کو خودکار طریقے سے بنانے کے لیے مفید ہے۔
type Entity = "user" | "post";
type Event = `${Entity}:${"created" | "deleted"}`;
// "user:created" | "user:deleted" | "post:created" | "post:deleted"
function on(event: Event, cb: () => void) {}
on("user:created", () => {}); // ✅
on("user:updated", () => {}); // ❌ not a valid event
type Getters<T> = {
[K in keyof T & string as `get${Capitalize<K>}`]: () => T[K];
};
// { name: string } → { getName: () => string }
Uppercase، Lowercase، Capitalize، Uncapitalize built-in intrinsic helpers ہیں۔
Template literal types string-based APIs کو type-safe بناتے ہیں: route params، event systems، CSS-in-JS، ORM column names۔
کسی بھی string کو قبول کرنے کی بجائے، آپ ایک precise، generated valid strings کے مجموعے تک محدود کر سکتے ہیں — compile time پر typos کو پکڑتے ہیں ان جگہوں میں جو پہلے stringly-typed تھیں۔