api 타입 시스템 준비 완료
This commit is contained in:
+7
-2
@@ -1,6 +1,6 @@
|
||||
|
||||
import type { Request, Response } from 'express';
|
||||
import type { APICallT, Callable, DefAPINamespace, EmptyAPICallT, HttpMethod, InvalidResponse, RawArgType, ValidResponse, recoveryMethod } from '../apiStructure/defs';
|
||||
import type { APICallT, Callable, DefAPINamespace, DeleteAPICallT, EmptyAPICallT, GetAPICallT, HeadAPICallT, HttpMethod, InvalidResponse, PatchAPICallT, PostAPICallT, PutAPICallT, RawArgType, ValidResponse, recoveryMethod } from '../apiStructure/defs';
|
||||
|
||||
export const treatedSpecial = Symbol('treatedSpecial');
|
||||
export type APINamespace = {
|
||||
@@ -83,7 +83,12 @@ export type GetClassGenerator<T> = {
|
||||
prototype: T
|
||||
};
|
||||
export type APIServerType<T extends Callable> =
|
||||
T extends APICallT<infer Q, infer R, infer E> ? GetClassGenerator<APIExecuter<R, E, Q>> :
|
||||
T extends GetAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<GET<R, E, Q>> :
|
||||
T extends PostAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<POST<R, E, Q>> :
|
||||
T extends PutAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<PUT<R, E, Q>> :
|
||||
T extends DeleteAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<DELETE<R, E, Q>> :
|
||||
T extends PatchAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<PATCH<R, E, Q>> :
|
||||
T extends HeadAPICallT<infer Q, infer R, infer E> ? GetClassGenerator<HEAD<R, E, Q>> :
|
||||
never;
|
||||
export type APINamespaceType<T extends DefAPINamespace> = {
|
||||
[K in keyof T]:
|
||||
|
||||
Reference in New Issue
Block a user