| 1 |
|
| 2 |
|
| 3 | type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
|
| 4 | type IsAny<T> = 0 extends 1 & T ? true : false;
|
| 5 | type Func = (...args: any[]) => unknown;
|
| 6 | type Pretty<T> = { [K in keyof T]: T[K] } & {};
|
| 7 | type Normalize<T> = _Normalize<UnionKeys<T>, T>;
|
| 8 | type _Normalize<Key extends keyof any, T> = T extends infer U ? Pretty<{ [K in Key as K extends keyof U ? undefined extends U[K] ? never : K : never]: K extends keyof U ? U[K] : never } & { [K in Key as K extends keyof U ? undefined extends U[K] ? K : never : never]?: K extends keyof U ? U[K] : never } & { [K in Key as K extends keyof U ? never : K]?: undefined }> : never;
|
| 9 | type UnionKeys<T> = T extends any ? keyof T : never;
|
| 10 |
|
| 11 | export { Equal, Func, IsAny, Normalize, Pretty }; |
| \ | No newline at end of file |