declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; declare type Identity = { [K in keyof T]: T[K]; }; declare type Zip = { [K in keyof T]: [T[K], K extends keyof U ? U[K] : never]; }; declare type FromZipped = T extends [infer K, infer V] ? Record : never; declare type ArrayCombine = Identity[number]>>>; export { ArrayCombine };