टेम्पलेट लिटरल टाइप आपको एक टेम्पलेट में अन्य टाइप को इंटरपोलेट करके नए स्ट्रिंग लिटरल टाइप बनाने देते हैं — टाइप स्तर पर स्ट्रिंग हेरफेर।
ts
= ;
: = ;
: = ;
type Color = "red" | "blue";
type Shade = "light" | "dark";
type Variant = `${Shade}-${Color}`;
// "light-red" | "light-blue" | "dark-red" | "dark-blue" — all combinations
कंपाइलर यूनियन के हर संयोजन को विस्तारित करता है — वैध स्ट्रिंग कुंजी (CSS क्लास, इवेंट नाम, मार्ग पैटर्न) स्वचालित रूप से उत्पन्न करने के लिए उपयोगी।
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 अंतर्निहित आंतरिक सहायक हैं।
टेम्पलेट लिटरल टाइप स्ट्रिंग-आधारित API को टाइप-सुरक्षित बनाते हैं: रूट पैरामीटर, इवेंट सिस्टम, CSS-in-JS, ORM कॉलम नाम।
किसी भी string को स्वीकार करने के बजाय, आप वैध स्ट्रिंग के एक सटीक, उत्पन्न सेट तक सीमित कर सकते हैं — उन जगहों पर कंपाइल समय पर टाइपो पकड़ सकते हैं जो पहले स्ट्रिंग-टाइप किए गए थे।