tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
124 lines (123 loc) • 3.07 kB
TypeScript
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;
}