RecipesChapter 6: String Template Literal Types

Writing a Formatter Function

Recipe 6.3 from The TypeScript Cookbook

function format<T extends string, K extends Record<FormatKeys<T>, any>>(
  fmtString: T,
  params: K
): string {
  let ret: string = fmtString;
  for (let k in params) {
    ret = ret.replaceAll(`{${k}}`, params[k]);
  }
  return ret;
}
Open in TypeScript Playground →