Extracting Format Parameter Types
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;
}