热衷于获取元组类型元素的键的交集?

时间:2020-11-01 07:21:58

标签: typescript

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)的交集?

1 个答案:

答案 0 :(得分:1)

您可以查询元组项类型的键:

type IntersectionOfTupleElementKeys<T extends readonly any[]> = keyof T[number];

type MyType = IntersectionOfTupleElementKeys<Tuple> // 'x'|'z'

Playground


我们使用T[number]获得所有元组项类型的并集,然后将keyof应用于并集类型会产生其键的交集。