RecipesChapter 6: String Template Literal Types

Extracting Format Parameter Types

Recipe 6.4 from The TypeScript Cookbook

function format<T extends string, K extends FormatObj<T>>(
  fmtString: T,
  params: K
): string {
  let ret: string = fmtString;
  for (let k in params) {
    let val = `${params[k]}`;
    let searchPattern = new RegExp(`{${k}:?.*?}`, "g");
    ret = ret.replaceAll(searchPattern, val);
  }
  return ret;
}
Open in TypeScript Playground →