title: For a type defined as a map of enum values to strings, how to check with flow that the map object literal has a key for every enum value?
body: <p>Let's say I have this type</p>
  
  <pre><code>type Status = "draft" | "validated" | "private" | "available" | "archived";
  </code></pre>
  
  <p>I'm instantiating objects that map this enum type to a string:</p>
  
  <pre><code>const statusNameMap: { [Status]: string } = {
    "draft": "Draft",
    "validated": "Validated",
    "private": "Private",
    "available": "Available",
    "archived": "Archived",
  };
  </code></pre>
  
  <p>This works just fine. Now the question is, how do I check at the type level that the object literal has to contain as keys all of the values from the <code>Status</code> enum?</p>
  
  <p>The main motivation is that the <code>Status</code> type is not in my control really, that's code being generated from introspecting a GraphQL schema, while the object map is for presentation purposes. If an enum value gets added/removed, I would like Flow to complain about my object literal not having the right keys.</p>
  
  <p>Is this possible with Flow at the moment?</p>