export type TuplifyUnion = { [S in U]: // for each variant in the union Exclude extends never // remove it and.. ? [S] // ..stop recursion if it was the last variant : [...TuplifyUnion>, S] // ..recur if not }[U] // extract all values from the object