vue-di-container
Version:
Dependency injection container for Vue
37 lines (36 loc) • 1.01 kB
TypeScript
import { Ctor, Func } from './util';
export declare class Token<T> {
readonly name?: string | undefined;
constructor(name?: string | undefined);
}
export declare type Key<T> = Ctor<T> | Token<T>;
export interface ValueProvider<T> {
key: Key<T>;
value: any;
}
export declare type ArgKeys = (Key<any> | undefined)[];
export interface PropertyKeys {
[name: string]: Key<any>;
}
export interface FullClassProvider<T> {
key: Key<T>;
class: Ctor<T>;
args?: ArgKeys;
props?: PropertyKeys;
}
export interface ShortClassProvider<T> {
key: Ctor<T>;
args?: ArgKeys;
props?: PropertyKeys;
}
export declare type ClassProvider<T> = FullClassProvider<T> | ShortClassProvider<T> | Ctor<T>;
export interface FactoryProvider<T> {
key: Key<T>;
factory: Func<T>;
args?: ArgKeys;
}
export interface AliasProvider<T> {
key: Key<T>;
aliasOf: Key<T>;
}
export declare type Provider<T> = ClassProvider<T> | ValueProvider<T> | FactoryProvider<T> | AliasProvider<T>;