UNPKG

fluxject

Version:

A strongly-typed dependency injection library.

56 lines (55 loc) 1.26 kB
/** * Thrown when a circular dependency is detected. * * This typically occurs when two services depend on each other inside their constructors. * * You can resolve this by deferring any de-reference of your dependencies until after the constructor has completed. * * @example * ```ts * // This would cause a circular dependency * class DependencyA { * test = 1; * constructor({ dependencyB }) { * dependencyB.test; * } * } * * class DependencyB { * test = 2; * constructor({ dependencyA }) { * dependencyA.test; * } * } * * // but this would be ok * class DependencyC { * test = 1; * #dependencyD; * constructor({ dependencyD }) { * this.#dependencyD = dependencyD; * } * } * * // You can still de-reference from one of the dependencies, though: * class DependencyD { * test = 2; * constructor({ dependencyC }) { * dependencyC.test; * } * } * ``` */ export class CircularDependencyError extends RangeError { /** * @param {string} serviceName * @param {any} stackTrace */ constructor(serviceName: string, stackTrace: any); } export class FluxjectError extends Error { /** * @param {string} message */ constructor(message: string); }