我正在使用Redux和Normalizr在TypeScript中构建React Native应用。所以我将拥有正常状态。
我有四个接口: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一样将其用于规范化状态。
怎么会这样一种类型或接口?
答案 0 :(得分:2)
使用TypeScript的Record
类型的衬板:
type PseudoPainReportsObject = Record<string, PainData>;
Record<K, V>
代表具有任意数量的K
类型键的对象,这些键映射到V
类型值。
答案 1 :(得分:1)
[date: string]
允许任意多个属性; PainReport
正是您想要的。
没有办法将其限制为仅一个属性。