feature(): add typings to the provider interface

This commit is contained in:
Kamil Myśliwiec
2019-02-20 17:08:31 +01:00
parent 251fddd005
commit 758257291b
2 changed files with 16 additions and 16 deletions

View File

@@ -1,26 +1,26 @@
import { Scope } from '../scope-options.interface';
import { Type } from '../type.interface';
export type Provider =
export type Provider<T = any> =
| Type<any>
| ClassProvider
| ValueProvider
| FactoryProvider;
| ClassProvider<T>
| ValueProvider<T>
| FactoryProvider<T>;
export interface ClassProvider {
provide: any;
useClass: Type<any>;
export interface ClassProvider<T = any> {
provide: string | symbol | Type<any>;
useClass: Type<T>;
scope?: Scope;
}
export interface ValueProvider {
provide: any;
useValue: any;
export interface ValueProvider<T = any> {
provide: string | symbol | Type<any>;
useValue: T;
}
export interface FactoryProvider {
provide: any;
useFactory: (...args: any[]) => any;
export interface FactoryProvider<T = any> {
provide: string | symbol | Type<any>;
useFactory: (...args: any[]) => T;
inject?: Array<Type<any> | string | any>;
scope?: Scope;
}

View File

@@ -31,7 +31,7 @@ import { MetadataScanner } from './metadata-scanner';
interface ApplicationProviderWrapper {
moduleKey: string;
providerKey: string;
type: string;
type: string | symbol | Type<any>;
}
export class DependenciesScanner {
@@ -264,7 +264,7 @@ export class DependenciesScanner {
const type = (provider as ClassProvider | ValueProvider | FactoryProvider)
.provide;
if (!providersKeys.includes(type)) {
if (!providersKeys.includes(type as string)) {
return this.container.addProvider(provider as any, token);
}
const providerToken = randomStringGenerator();
@@ -319,7 +319,7 @@ export class DependenciesScanner {
const { providers } = modules.get(moduleKey);
const { instance } = providers.get(providerKey);
applyProvidersMap[type](instance);
applyProvidersMap[type as string](instance);
},
);
}