types-helpers
Version:
Librería de utilidades avanzadas para tipos en TypeScript
13 lines (12 loc) • 353 B
TypeScript
type Flat<T> = {
[K in keyof T as T[K] extends object ? never : K]: T[K];
};
type Expand<T> = {
[K in keyof T]: T[K] extends object ? T[K] : never;
}[keyof T] extends infer O ? {
[K in keyof O]: O[K];
} : never;
export type Flatten<T> = Flat<T> & Expand<{
[K in keyof T as T[K] extends object ? K : never]: Flatten<T[K]>;
}>;
export {};