@owja/ioc
Version:
dependency injection for javascript
37 lines (36 loc) • 947 B
TypeScript
interface IConfig<T> {
object?: INewAble<T>;
factory?: Factory<T>;
value?: Value<T>;
cache?: T;
singleton: boolean;
}
interface INewAble<T> {
new (...args: any[]): T;
}
declare type Factory<T> = () => T;
declare type Value<T> = T;
declare class Options<T> {
private _target;
constructor(_target: IConfig<T>);
inSingletonScope(): void;
}
declare class Bind<T> {
private _target;
constructor(_target: IConfig<T>);
to(object: INewAble<T>): Options<T>;
toFactory(factory: Factory<T>): Options<T>;
toValue(value: Value<T>): void;
}
export declare class Container {
private _registry;
private _snapshots;
bind<T = never>(type: symbol): Bind<T>;
rebind<T = never>(type: symbol): Bind<T>;
remove(type: symbol): Container;
get<T = never>(type: symbol): T;
snapshot(): Container;
restore(): Container;
private _add;
}
export {};