Writing a Formatter Function
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;
}