TypeScript - Template Literal Types & satisfies

Template literal types

type EventName = `on${Capitalize}`;

function on(event: E, handler: () => void) {}

satisfies operator

const routes = {
  home: '/',
  user: '/users/:id'
} as const satisfies Record;

// keys are literal, values are strings

as const

const ROLES = ['admin','user','guest'] as const;
type Role = typeof ROLES[number]; // 'admin' | 'user' | 'guest'