title: Why is the keyof this object type number or string?
body: <p>Given:</p>
  
  <pre><code>type EventDefinitions&lt;TEventPayload extends object&gt; = {
      [eventName: string]: TEventPayload;
    };
  
  type X = keyof EventDefinitions&lt;object&gt;;
  </code></pre>
  
  <p>Why is the type of X here <code>number | string</code> ? I would expect it to be just string as I am explicitly stating that it will be a string aren't I?</p>