@mooncake/container
Version:
DI(dependency injection) container for JavaScript and TypeScript.
37 lines (36 loc) • 1.47 kB
TypeScript
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;
}