util.ts
1export type Prettify<T> = {
2 [K in keyof T]: T[K]
3} & unknown
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
15 ? DeepClean<T[K]>
16 : T[K]
17}