TypeScript:如何为具有许多相同类型的键和相同类型的值的对象创建接口?

TypeScript: How to create an interface for an object with many keys of the same type and values of the same type?

我正在使用 Redux 和 Normalizr 在 TypeScript 中构建一个 React Native 应用程序。所以我会有 noramlized 状态。

我有四个接口:EmotionNeedPainDataPainReport:

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 时那样将其用于规范化状态。

如何做这样的类型或接口?

[date: string] 允许任意多个属性; PainReport 做你想做的。

无法将其限制为只有一个 属性。

使用 TypeScript 的 Record 类型的一行:

type PseudoPainReportsObject = Record<string, PainData>;

Record<K, V> 表示具有任意数量的 K 类型键映射到 V 类型值的对象。