TypeScript: как создать интерфейс для объекта с множеством ключей одного типа и значений одного типа? - PullRequest
0 голосов
/ 11 октября 2018

Я создаю приложение React Native на TypeScript с Redux и Normalizr .Так что у меня будет noramlized состояние.

У меня есть четыре интерфейса: Emotion, Need, PainData и PainReport:

export interface Emotion {
  name: string;
  chosen: boolean;
  rating: number;
}

export interface Need {
  name: string;
  rating: number;
}

export interface PainData {
  note: string;
  emotions: Emotion[];
  needs: Need[];
  date: Date;
}

export interface PainReport {
  [date: string]: PainData
}

Теперь я хотел бы создатьинтерфейс, который не является массивом, но объект и допускает несколько PainReports, как это (псевдокод):

export interface PseudoPainReportsObject {
  [date: string]: PainData,
  [date: string]: PainData,
  [date: string]: PainData,
  // ... dynamically have as many as I'd like. Maybe 1, maybe 100
}

Я хочу использовать это для нормализованного состояния, которое вы получаете при использовании Normalizr.

Как можно сделать такой тип или интерфейс?

1 Ответ

0 голосов
/ 12 октября 2018

[date: string] допускает сколь угодно много свойств;PainReport делает именно то, что вы хотите.

Нет способа ограничить его только одним свойством.

...