UNPKG

@specs-feup/lara

Version:

A js port of the popular framework for building source-to-source compilers

58 lines 1.68 kB
/** * Options to construct the error */ export interface AbstractClassErrorOptions { /** * Whether the error is being thrown by an abstract constructor or method */ kind: "constructor" | "abstractMethod"; /** * The base abstract class */ baseClass: any; /** * The derived class. Only used when building an error for an abstract method. */ derivedClass?: any; /** * The method that is not implemented. Only used when building an error for an abstract method. */ method?: any; } /** * Custom error to be thrown when derived classes do not extend an abstract class correctly. * * To use the error correctly, write something like: * * @example * ```js * class AnAbstractClass { * constructor() { * if (this.constructor === AnAbstractClass) { * throw new AbstractClassError({ * kind: "constructor", * baseClass: AnAbstractClass, * }); * // message: "AbstractClassError: Cannot instantiate abstract class AnAbstractClass." * } * } * * notImplementedMethod() { * throw new AbstractClassError({ * kind: "abstractMethod", * baseClass: AnAbstractClass, * derivedClass: this.constructor, * method: this.notImplementedMethod, * }); * // message: "AbstractClassError: Derived class ADerivedClass has not implemented abstract method AnAbstractClass::notImplementedMethod." * } * } * ``` * * Formats a message like: * "AbstractClassError: */ export default class AbstractClassError extends Error { constructor(options: AbstractClassErrorOptions); } //# sourceMappingURL=AbstractClassError.d.ts.map