@httpc/kit
Version:
httpc toolbox for building function-based API with minimal code and end-to-end type safety
10 lines (9 loc) • 735 B
TypeScript
import { IService } from "./types";
type ServiceConstructor<T extends IService = IService> = new (...args: any) => T;
type Instances<T extends (ServiceConstructor | IService)[]> = {
[k in keyof T]: T[k] extends ServiceConstructor<infer I> ? I : T[k] extends IService ? T[k] : never;
};
export declare function useTransaction<T extends ServiceConstructor, R>(type: T, func: (service: InstanceType<T>) => Promise<R>): Promise<R>;
export declare function useTransaction<T extends IService, R>(type: T, func: (service: T) => Promise<R>): Promise<R>;
export declare function useTransaction<T extends (ServiceConstructor | IService)[], R>(...services: [...T, (...instances: Instances<T>) => Promise<R>]): Promise<R>;
export {};