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

nkcskrwz  于 2023-10-19  发布在  TypeScript
关注(0)|答案(2)|浏览(165)

我正在使用Redux和Normalizr在TypeScript中构建React Native应用程序。所以我会有一个规范化的状态。
我有四个接口: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
}

现在我想创建一个接口,它不是一个数组,而是一个允许多个PainReport的对象,如下所示(伪代码):

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时得到的那样。
如何实现这样的类型或接口?

e3bfsja2

e3bfsja21#

一个使用TypeScript的Record类型的行:

type PseudoPainReportsObject = Record<string, PainData>;

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

r6vfmomb

r6vfmomb2#

[date: string]允许任意多个属性; PainReport正是你想要的。
没有办法将其限制为只有一个属性。

相关问题