forget-api
Version:
无需封装 Axios,无需写接口请求函数,无需维护返回值类型,把这些琐碎重复的事情交给工具来处理,让精力聚焦在核心功能的实现上。
19 lines (18 loc) • 981 B
TypeScript
import { ControllerOptions } from '@nestjs/common';
export declare type Mark<T> = T & {
[Symbol.unscopables]: unknown;
};
declare type InferRequestParams<T> = T extends [infer U, ...infer REST] ? U extends Mark<infer V> ? V & InferRequestParams<REST> : InferRequestParams<REST> : {};
declare type RequestParams<T, Params = InferRequestParams<T>> = [keyof Params] extends [
never
] ? void : Params;
export declare function defineExpose<T>(Ctor: new (...args: any) => T): {
[key in keyof T]: T[key] extends (...args: infer Args) => infer Result ? (data: RequestParams<Args> | BodyInit, options?: RequestInit) => Result extends Promise<any> ? Result : Promise<Result> : never;
};
/**
* @example ```@Controller(__filename)```
*/
export declare function Controller(): ClassDecorator;
export declare function Controller(prefix: string | string[]): ClassDecorator;
export declare function Controller(options: ControllerOptions): ClassDecorator;
export {};