export class ApiError extends Error { constructor( readonly message: string, public readonly code: number, public readonly httpStatus: number = 400, public readonly defaultParams?: string[] ) { super(message); } withDefaultParams(): ApiError { if (this.defaultParams) return new ApiError(applyParamsToString(this.message, this.defaultParams), this.code, this.httpStatus); return this; } withParams(...params: (string | number)[]): ApiError { return new ApiError(applyParamsToString(this.message, params), this.code, this.httpStatus); } } export function applyParamsToString(s: string, params: (string | number)[]): string { let newString = s; params.forEach((a) => { newString = newString.replace("{}", "" + a); }); return newString; }