SplitProps
type SplitProps<T, K extends (readonly (keyof T)[])[]> = [ ...{ [P in keyof K]: P extends `${number}` ? Pick<T, Extract<K[P], readonly (keyof T)[]>[number]> : never; }, { [P in keyof T as Exclude<P, K[number][number]>]: T[P]; }];