export class BaseError extends Error { public readonly name: string; public readonly httpCode: number; public readonly isOperational: boolean; constructor( name: string, httpCode: number, description: string, isOperational: boolean, ) { super(description); Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain this.name = name; this.httpCode = httpCode; this.isOperational = isOperational; // if error is part of known errors that our application can anticipate Error.captureStackTrace(this); } }