title: TypeScript: How to create an interface for an object with many keys of the same type and values of the same type?
body: <p>I'm building a React Native app in TypeScript with Redux and <a href="https://github.com/paularmstrong/normalizr" rel="noreferrer">Normalizr</a>. So I will have noramlized state.</p>
  
  <p>I have four interfaces: <code>Emotion</code>, <code>Need</code>, <code>PainData</code> and <code>PainReport</code>:</p>
  
  <pre><code>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
  }
  </code></pre>
  
  <p>Now I would like to create an interface that is not an array, but an object an allows several PainReports like this (pseudo code):</p>
  
  <pre><code>export interface PseudoPainReportsObject {
    [date: string]: PainData,
    [date: string]: PainData,
    [date: string]: PainData,
    // ... dynamically have as many as I'd like. Maybe 1, maybe 100
  }
  </code></pre>
  
  <p>I want to use this for normalized state like you get when using Normalizr.</p>
  
  <p>How would one do such a type or interface?</p>