export type MaybeArray = T | T[]; export type StringUnion = T | (string & {}); export type AnyFunction = (...args: T[]) => any; export type Length = StringUnion<0 | (number | {})>; export type Assign = Omit & U; export type Leaves = T extends object ? { [K in keyof T]: `${Exclude}${Leaves extends never ? '' : `.${Leaves}`}`; }[keyof T] : never;