德玛西亚99
如果您试图将数组到一个交集中,预先映射数组将导致所产生的数组联合以获得错误的顺序。.如果结果的交集顺序不重要,这可能并不重要,但如果这样做,上述答案将无法工作。下面的数组最多支持9,如果需要更长的递归时间,可以手动进行扩展。type Idx<T extends any, K extends keyof any, Yes> = T extends Record<K, any>
? T[K] & Yes
: unknown
type ArrayToIntersection<T extends any[]> = Idx<T, '0', Idx<T, '1', Idx<T, '2', Idx<T, '3', Idx<T, '4', Idx<T, '5', Idx<T, '6',
Idx<T, '7', Idx<T, '8', Idx<T, '9', unknown>>>>>>>>>>// Usage: => 1 & 2 & 3 & 4type Result = ArrayToIntersection<[1, 2, 3, 4]>