Объект Typescript с универсальными ключами и обычными ключами?

#typescript

#typescript

Вопрос:

У меня есть следующий тип:

 type MyKeys = 'foo' | 'bar' | 'baz'
  

Я хочу определить тип, который имеет ключи типа MyKeys , но также расширяет его с помощью большего количества ключей, например, этого:

 type FooType = {
  [key in MyKeys]: boolean
  quux: boolean   // <--- Error: '}' expected.ts(1005)
}
  

Как я могу использовать как общие ключи, так и явные имена ключей?

Комментарии:

1. Я также не уверен, что «универсальные ключи» — это то, что вы называете этим, и если «явные ключи» имеют смысл

Ответ №1:

Можно использовать тип пересечения:

 type FooType = {[key in MyKeys]: boolean} amp; {
  quux: boolean
}
  

или, как упоминал @jcalz, вы также можете использовать Record<> :

 Record<MyKeys | 'quux', boolean>
  

это будет эквивалентно:

введите описание изображения здесь

Комментарии:

1. Это взаимодействие , а не объединение .

2. Вы также можете сделать Record<MyKeys | 'quux', boolean>