api 타입 시스템 준비 완료

This commit is contained in:
2023-08-06 12:38:38 +00:00
parent 5e216e5f67
commit 257644aff7
6 changed files with 25 additions and 8 deletions
+7 -2
View File
@@ -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]: