Как пересечь вложенный тип в определении другого типа - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть два типа,

type Foo = {
  [key: string]: {
    a: number
  }
}

type Bar = {
  b: number
}

, и я хочу создать третий тип, который выглядит следующим образом:

type FooBar = {
  [key: string]: {
    a: number,
    b: number
  }
}

Как я могу определить FooBar, используя наследование (чтобы гарантироватьчто Foo и FooBar всегда имеют одну и ту же сигнатуру / ключ индекса)?

Я уже знаю, что могу сделать это с помощью

type FooBar = {
  [key: string]: Foo[string] & bar
}

, однако это требует от меня определения key отдельно для Foo и FooBar.

1 Ответ

0 голосов
/ 29 ноября 2018

Для вашего простого примера, который имеет строковую подпись, я бы не стал усложнять ситуацию дальше.Если Foo имеет дискретные ключи и вы хотите добавить Bar o к каждому члену, вы можете использовать сопоставленный тип:

type Foo = {
  [key: string]: {
    a: number
  }
}

type Bar = {
  b: number
}

type FooBar = {
  [P in keyof Foo]: Foo[P] & Bar
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...