type Simplify = T extends any ? { [K in keyof T]: Simplify; } : T; /** * Works like {@link Simplify}, but doesn't simplify the specified leaf type * * @typeParam T - source object * @typeParam U - types to exclude from simplifying */ type SimplifyLeaf = T extends any ? { [K in keyof T]: T[K] extends U ? T[K] : Simplify; } : T; type Override = Omit & Override; export type { Override, Simplify, SimplifyLeaf };