#typescript
#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')amp;('b'|'x'|'z')='x'|'z'
У меня есть тип кортежа с общими полями для каждого типа элемента (например, type Tuple
‘s x and z
). Как получить пересечение общих полей ( 'x'|'z'
)?
Ответ №1:
Вы можете запрашивать ключи типа элемента кортежа:
type IntersectionOfTupleElementKeys<T extends readonly any[]> = keyof T[number];
type MyType = IntersectionOfTupleElementKeys<Tuple> // 'x'|'z'
Мы получаем объединение всех типов элементов кортежа с помощью T[number]
, а затем keyof
применяем к типу объединения, что приводит к пересечению их ключей.
Комментарии:
1. Просто и приветствую!