UNPKG

metaf-resolvable

Version:

Abstract resolvable mixin and injection root for adding DI/IoC to any framework

37 lines 1.84 kB
import { AbstractResolvable, IInjections } from './AbstractResolvable'; import { AbstractClass } from './utils'; export declare type Resolvable<I extends IInjections, P extends AbstractClass> = abstract new (...args: ConstructorParameters<P>) => InstanceType<P> & AbstractResolvable<I>; /** * ResolvableClassFn interface * @description it's a factory function that creates new resolvable classes * @template P typeof parent class that will be used for creating new classes */ export interface IResolvableClassFn<P extends AbstractClass> { /** * Resolvable class factory * @description Resolvable * @template I type of dependencies' dictionary * @template R type of requirements' tuple * @param injections dependencies that will be used by class directly * @param requirements dependencies that should exist in code that use this class * @returns resolvable class to extend */ <I extends IInjections = {}, R extends unknown[] = unknown[]>(injections: I, ...requirements: R): Resolvable<I, P>; /** * Resolvable class factory * @description Resolvable * @returns resolvable class to extend */ (): Resolvable<{}, P>; } /** * Creator of Resolvable factories * @description this function is designed to be used by packages like `metaf-react` * in order to create factory of Resolvable {something}, that afterwards would be used * by users in particular projects * @template P typeof parent class that will be used for creating new classes * @param [parent] class that should be a parent for each class return from factory function * @returns factory for creating resolvable classes */ export declare function Resolvable<P extends AbstractClass>(parent: P): IResolvableClassFn<P>; //# sourceMappingURL=Resolvable.d.ts.map