type Tuple=[{a:string,x:string,z:string},{b:string,x:string,z:string}]
type IntersectionOfTupleElementKeys<T>=...
type MyType = IntersectionOfTupleElementKeys<Tuple> // = ('a'|'x'|'z')&('b'|'x'|'z')='x'|'z'
我有一个元组类型,每个元素类型上都有公共字段(例如类型Tuple
的{{1}})。如何获得公共字段(x and z
)的交集?
答案 0 :(得分:1)
您可以查询元组项类型的键:
type IntersectionOfTupleElementKeys<T extends readonly any[]> = keyof T[number];
type MyType = IntersectionOfTupleElementKeys<Tuple> // 'x'|'z'
我们使用T[number]
获得所有元组项类型的并集,然后将keyof
应用于并集类型会产生其键的交集。