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}