Создание типа для объекта, который включает в себя карту плюс другие ключи в TypeScript - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть такая структура данных:

{
  anyKey: {
    id: 'blah',
    val: 12  
  },
  anotherKey: {
    id: 'blah2',
    val: 13  
  },
  data: 'fred',
  count: 15  
}

Я хочу создать тип (или интерфейс) для структуры данных. Я пытался использовать запись, но она не работает, когда я делаю это:

type IdVal {
  id: string;
  val: number;
}

type MyType = {
  Record<string, IdVal>;
  data: string;
  count: number
}

Что мне здесь делать? Тот факт, что я хочу принять любой ключ, кроме data или count, делает невозможным превращение в Type?

1 Ответ

0 голосов
/ 23 апреля 2020

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

{
  map: {
    anyKey: {
      id: 'blah',
      val: 12
    },
    anotherKey: {
      id: 'blah2',
      val: 13
    }
  },
  data: 'fred',
  count: 15
}

И такой тип:

type IdVal {
  id: string;
  val: number;
}

type MyType = {
  map: Record<string, IdVal>;
  data: string;
  count: number
}
...