@asuka/di
Version:
Dependencies inject library
29 lines (28 loc) • 851 B
TypeScript
export declare class InjectionToken<T> {
private readonly desc;
readonly _phantom?: T;
constructor(desc: string);
toString(): string;
}
export interface Type<T = object> extends Function {
new (...args: any[]): T;
}
export interface ValueProvider<T> {
provide: Token<T>;
useValue: T;
}
export interface FactoryProvider<T, Deps extends Array<Token<any>> = any[]> {
provide: Token<T>;
useFactory: (...args: Deps) => T;
deps?: Deps;
}
export interface ClassProvider<T> {
provide: Token<T>;
useClass: Type<T>;
}
export interface ExistingProvider<T> {
provide: Token<T>;
useExisting: Token<T>;
}
export declare type Token<T = unknown> = Type<T> | InjectionToken<T>;
export declare type Provider<T = unknown> = Type<T> | ValueProvider<T> | ClassProvider<T> | ExistingProvider<T> | FactoryProvider<T>;