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}