UNPKG

@asuka/di

Version:
29 lines (28 loc) 851 B
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>;