feat(projects): useNaiveTable函数:类型部分

This commit is contained in:
Soybean
2022-07-28 00:30:10 +08:00
parent b32bca4984
commit 02992dc02d
5 changed files with 89 additions and 4 deletions

View File

@ -1,7 +1,21 @@
declare namespace TypeUtil {
type Noop = (...args: any) => any;
type UnionInclude<T, K extends keyof T> = K extends keyof T ? true : false;
type GetFunArgs<F extends Noop> = F extends (...args: infer P) => any ? P : never;
type GetFunReturn<F extends Noop> = F extends (...args: any) => infer R ? R : never;
type FirstOfArray<T extends any[]> = T extends [infer First, ...infer _Rest] ? First : never;
type LastOfArray<T extends any[]> = T extends [...infer _Rest, infer Last] ? Last : never;
type ArrayToUnion<T extends any[]> = T extends [infer First, ...infer Rest]
? First extends any
? Rest extends any[]
? FirstOfArray<[First]> | ArrayToUnion<Rest>
: [First]
: never
: never;
}