Script Valley
TypeScript: Complete Course from Zero
Advanced Types and Real-World PatternsLesson 6.3

Template literal types in TypeScript dynamic string types

template literal type syntax, string interpolation in types, Capitalize Uppercase built-ins, combining with unions, event name patterns

Template literal types

Template literal types use backtick syntax to create string types programmatically:

type EventName = "click" | "focus" | "blur";
type HandlerName = `on${Capitalize}`;
// "onClick" | "onFocus" | "onBlur"

Generating typed API routes

type Entity = "user" | "post" | "comment";
type Method = "get" | "create" | "update" | "delete";
type ApiMethod = `${Method}${Capitalize}`;
// "getUser" | "createUser" | "updateUser" | "deleteUser" | ...

type ApiClient = {
  [K in ApiMethod]: () => void;
};

Parsing string literals

type GetEventType =
  S extends `on${infer Event}` ? Uncapitalize : never;

type T = GetEventType<"onClick">; // "click"

Template literal types are powerful for generating exhaustive sets of string keys. Combined with mapped types and conditional types they enable zero-runtime type safety for pattern-heavy code like event systems and API clients.

Up next

TypeScript module augmentation and declaration merging

Sign in to track progress