UNPKG

@mooncake/container

Version:

DI(dependency injection) container for JavaScript and TypeScript.

37 lines (36 loc) 1.47 kB
import { Constructor, ContainerResolver, Factory, ID } from './types'; export declare abstract class Registion<T> { protected singleton: boolean; protected scope?: string; protected instance?: T; constructor(singleton: boolean, scope?: string); /** * get instance of registion * * @param {ContainerResolver} container * @returns {T} * @memberof Registion */ getInstance(container: ContainerResolver, scope?: string): T; abstract createInstance(container: ContainerResolver): T; } export declare class ValueRegistion<T> extends Registion<T> { constructor(ins: T, scope?: string); createInstance(container: ContainerResolver): T; } export declare class ClassRegistion<T> extends Registion<T> { readonly clazz: Constructor<T> | Function; constructor(clazz: Constructor<T> | Function, singleton: boolean, scope?: string); createInstance(container: ContainerResolver): T; } export declare class FactoryRegistion<T> extends Registion<T> { readonly factory: Factory<T>; constructor(factory: Factory<T>, singleton: boolean, scope?: string); createInstance(container: ContainerResolver): T; } export declare class AliasRegistion<T> extends Registion<T> { readonly srcId: ID<T>; constructor(srcId: ID<T>, scope?: string); getInstance(container: ContainerResolver, scope?: string): T; createInstance(container: ContainerResolver): T; }