ExpandDeep

type
type ExpandDeep = T extends object
  ? T extends infer O
    ? { [K in keyof O]: ExpandDeep<O[K]> }
    : never
  : T;

Deeply expand a type, including nested objects.