// @see:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html // @see: https://stackoverflow.com/a/50375286/7186598 type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; // Helps make intellisense better sometimes, particularly when dealing with an intersection type Identity = { [K in keyof T]: T[K] }; type Zip = { [K in keyof T]: [T[K], K extends keyof U ? U[K] : never]; }; type FromZipped = T extends [infer K, infer V] ? Record : never; type ArrayCombine = Identity< UnionToIntersection[number]>> >; export { ArrayCombine };