如何将一个类型元组同时转换为所有这些类型的交集?
type TupleToIntersection<
Rest extends any[],
T = Rest extends [any, ...any[]] ? Rest['0'] : never,
> = Rest extends [infer H, ...infer S] ? TupleToIntersection<S, H & T> : T
type TTest1 = TupleToIntersection<[string,any,number]> // any but should be never!
type Test1 = string & any & number // never
type Test2 = (string & any) & number // any - what TupleToIntersection is doing
代码
2条答案
按热度按时间kq4fsx7k1#
如下定义
TupleToIntersection
可以提供您所需的内容:au9on6nz2#
这要简单得多,也可以与两个以上元素一起使用: