Expand

type
type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never;

Force TypeScript to fully expand a type.
This helps with deferred type evaluation in recursive types.