테스트
This commit is contained in:
Vendored
-18
@@ -1,18 +0,0 @@
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
|
|
||||||
type C = (...args: any) => any;
|
|
||||||
type Rev<A> = ()=> A;
|
|
||||||
|
|
||||||
type ChainResult<T> =
|
|
||||||
T extends [infer R0 extends C] ? ReturnType<R0> :
|
|
||||||
T extends [infer R1 extends C, infer R0 extends C] ? ReturnType<R1> & ReturnType<R0> :
|
|
||||||
T extends [infer R2, infer R1, ...infer RX] ? ChainResult2<R2, R1, ChainResult<[R2, R1]>, ChainResult<[Rev<ChainResult<[R2, R1]>>, ...RX]>> :
|
|
||||||
never;
|
|
||||||
|
|
||||||
type ChainResult2<A, B, T, ANS> = T extends ChainResult<[A, B]> ? ANS: never;
|
|
||||||
|
|
||||||
declare function DeclConverter<R0 extends C>(r0: R0): [[R0], ReturnType<R0>];
|
|
||||||
declare function DeclConverter<R0, R1>(r0: R0, r1: R1): [[R0, R1], ChainResult<[R0, R1]>];
|
|
||||||
declare function DeclConverter<R0, R1, R2>(r0: R0, r1: R1, r2:R2) : [[R0, R1, R2], ChainResult<[R0, R1, R2]>];
|
|
||||||
declare function DeclConverter<R0, R1, R2, R3>(r0: R0, r1: R1, r2:R2, r3:R3) : [[R0, R1, R2, R3], ChainResult<[R0, R1, R2, R3]>];
|
|
||||||
declare function DeclConverter<R0, R1, R2, R3, R4>(r0: R0, r1: R1, r2:R2, r3:R3, r4:R4) : [[R0, R1, R2, R3, R4], ChainResult<[R0, R1, R2, R3, R4]>];
|
|
||||||
@@ -2,7 +2,7 @@ import { Request, Response, NextFunction } from "express";
|
|||||||
import { ReqLogin } from "./reqLogin";
|
import { ReqLogin } from "./reqLogin";
|
||||||
import { ReqGameLogin } from "./reqGameLogin";
|
import { ReqGameLogin } from "./reqGameLogin";
|
||||||
import { ParseUserLevel } from "./ParseUserLevel";
|
import { ParseUserLevel } from "./ParseUserLevel";
|
||||||
|
import { DeclConverter } from "./base2";
|
||||||
export type InvalidConversion = {
|
export type InvalidConversion = {
|
||||||
isInvalid: true;
|
isInvalid: true;
|
||||||
reason?: string;
|
reason?: string;
|
||||||
|
|||||||
Vendored
+17
@@ -0,0 +1,17 @@
|
|||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
type C = (...args: any) => any;
|
||||||
|
type Rev<A> = ()=> A;
|
||||||
|
|
||||||
|
type ChainResult<T> =
|
||||||
|
T extends [infer R0 extends C] ? ReturnType<R0> :
|
||||||
|
T extends [infer R1 extends C, infer R0 extends C] ? ReturnType<R1> & ReturnType<R0> :
|
||||||
|
T extends [infer R2, infer R1, ...infer RX] ? ChainResult2<R2, R1, ChainResult<[R2, R1]>, ChainResult<[Rev<ChainResult<[R2, R1]>>, ...RX]>> :
|
||||||
|
never;
|
||||||
|
|
||||||
|
type ChainResult2<A, B, T, ANS> = T extends ChainResult<[A, B]> ? ANS: never;
|
||||||
|
|
||||||
|
export function DeclConverter<R0 extends C>(r0: R0): [[R0], ReturnType<R0>];
|
||||||
|
export function DeclConverter<R0, R1>(r0: R0, r1: R1): [[R0, R1], ChainResult<[R0, R1]>];
|
||||||
|
export function DeclConverter<R0, R1, R2>(r0: R0, r1: R1, r2:R2) : [[R0, R1, R2], ChainResult<[R0, R1, R2]>];
|
||||||
|
export function DeclConverter<R0, R1, R2, R3>(r0: R0, r1: R1, r2:R2, r3:R3) : [[R0, R1, R2, R3], ChainResult<[R0, R1, R2, R3]>];
|
||||||
|
export function DeclConverter<R0, R1, R2, R3, R4>(r0: R0, r1: R1, r2:R2, r3:R3, r4:R4) : [[R0, R1, R2, R3, R4], ChainResult<[R0, R1, R2, R3, R4]>];
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export function DeclConverter(...target){
|
||||||
|
return [target, undefined];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user