UNPKG

typed-inject

Version:

Type safe dependency injection framework for TypeScript

16 lines 1.18 kB
import { CorrespondingTypes } from './CorrespondingType.js'; import { InjectionToken } from './InjectionToken.js'; export type InjectableClass<TContext, R, Tokens extends readonly InjectionToken<TContext>[]> = ClassWithInjections<TContext, R, Tokens> | ClassWithoutInjections<R>; export interface ClassWithInjections<TContext, R, Tokens extends readonly InjectionToken<TContext>[]> { new (...args: CorrespondingTypes<TContext, Tokens>): R; readonly inject: Tokens; } export type ClassWithoutInjections<R> = new () => R; export type InjectableFunction<TContext, R, Tokens extends readonly InjectionToken<TContext>[]> = InjectableFunctionWithInject<TContext, R, Tokens> | InjectableFunctionWithoutInject<R>; export interface InjectableFunctionWithInject<TContext, R, Tokens extends readonly InjectionToken<TContext>[]> { (...args: CorrespondingTypes<TContext, Tokens>): R; readonly inject: Tokens; } export type InjectableFunctionWithoutInject<R> = () => R; export type Injectable<TContext, R, Tokens extends readonly InjectionToken<TContext>[]> = InjectableClass<TContext, R, Tokens> | InjectableFunction<TContext, R, Tokens>; //# sourceMappingURL=Injectable.d.ts.map