UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

124 lines (123 loc) 3.07 kB
import { Type, Token, Factory, SymbolType, Providers } from './types'; import { IMethodAccessor } from './IMethodAccessor'; import { LifeScope } from './LifeScope'; /** * container interface. * * @export * @interface IContainer */ export interface IContainer extends IMethodAccessor { /** * has register the token or not. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {boolean} * @memberof IContainer */ has<T>(token: Token<T>, alias?: string): boolean; /** * Retrieves an instance from the container based on the provided token. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {T} * @memberof IContainer */ get<T>(token: Token<T>, alias?: string): T; /** * resolve type instance with token and param provider. * * @template T * @param {Token<T>} token * @param {...Providers[]} providers * @returns {T} * @memberof IContainer */ resolve<T>(token: Token<T>, ...providers: Providers[]): T; /** * clear cache. * * @param {Type<any>} targetType * @memberof IContainer */ clearCache(targetType: Type<any>): any; /** * get token. * * @template T * @param {SymbolType<T>} target * @param {string} [alias] * @returns {Token<T>} * @memberof IContainer */ getToken<T>(target: SymbolType<T>, alias?: string): Token<T>; /** * get tocken key. * * @template T * @param {Token<T>} token * @param {string} [alias] * @returns {SymbolType<T>} * @memberof IContainer */ getTokenKey<T>(token: Token<T>, alias?: string): SymbolType<T>; /** * get token implements class type. * * @template T * @param {Token<T>} token * @returns {Type<T>} * @memberof IContainer */ getTokenImpl<T>(token: Token<T>): Type<T>; /** * register type. * * @template T * @param {Token<T>} token * @param {Factory<T>} [value] * @returns {this} * @memberof IContainer */ register<T>(token: Token<T>, value?: Factory<T>): this; /** * unregister the token * * @template T * @param {Token<T>} token * @returns {this} * @memberof IContainer */ unregister<T>(token: Token<T>): this; /** * bind provider * * @template T * @param {Token<T>} provide * @param {Token<T> | Factory<T>} provider * @returns {this} * @memberof IContainer */ bindProvider<T>(provide: Token<T>, provider: Token<T> | Factory<T>): this; /** * register stingleton type. * * @template T * @param {Token<T>} token * @param {Factory<T>} value * * @memberOf IContainer */ registerSingleton<T>(token: Token<T>, value?: Factory<T>): any; /** * get life scope of container. * * @returns {LifeScope} * @memberof IContainer */ getLifeScope(): LifeScope; }