##// END OF EJS Templates
dependency builder proposal
dependency builder proposal

File last commit:

r108:0d76488aa00a ioc ts support
r108:0d76488aa00a ioc ts support
Show More
Annotations.ts
37 lines | 917 B | video/mp2t | TypeScriptLexer
import { Constructor } from "../interfaces";
export interface InjectOptions {
lazy?: boolean;
}
type Setter<T = any> = (v: T) => void;
type Injector<T> = {
[k in keyof T]: Setter;
};
export class Builder<T, S> {
provides(name: string) {
return <C extends Constructor<T>>(constructor: C) => {
return constructor;
};
}
inject<K extends keyof S>(dependency: K) {
return <M extends keyof T>(target: any, memberName: M, descriptor: TypedPropertyDescriptor<Setter<S[K]>> ) => {
};
}
prop<K extends keyof S>(dependency: K) {
return <M extends keyof T>(target: any, memberName: M, descriptor: TypedPropertyDescriptor<S[K]> ) => {
};
}
}
export function inject<I extends Injector<I> >(dependency: string) {
return <M extends keyof I>(target: any, memberName: M, descriptor: TypedPropertyDescriptor<I[M]> ) => {
};
}