util.ts
1export type Prettify<T> = {
2 [K in keyof T]: T[K];
3} & {};
4
5/**
6* Clean removes the [k: string]: unknown property from an object,
7* and Prettifies it, providing better hover information for the type
8*/
9export type Clean<T> = {
10 [K in keyof T as string extends K ? never : K]: T[K];
11}
12
13export type DeepClean<T> = {
14 [K in keyof T as string extends K ? never : K]: T[K] extends object ? DeepClean<T[K]> : T[K];
15}