title: Typescript - Has no index signature when use Enums as index signature types
body: <p>I have the follow type structure:</p>
  
  <pre class="lang-js prettyprint-override"><code>export type Method1 = (id: string, param: string) =&gt; Promise&lt;any&gt;
  
  export enum ValuesList {
    VALUE1 = 'VALUE1',
    VALUE2 = 'VALUE2'
  }
  
  export type ValuesMap = {
    [key in ValuesList]: {
      callMethod: Method1
    }
  }
  
  export const methodsMap: ValuesMap = {
    [ValuesList.VALUE1]: {
      callMethod: lib.method
    },
    [ValuesList.VALUE2]: {
      callMethod: lib2.method
    }
  }
  </code></pre>
  
  <p>And in some part of the application I want to map some list to call this method dynamically:</p>
  
  <pre><code>methodsMap[target].callMethod(data.id, data.param)
  </code></pre>
  
  <p>By typescript are returning the follow problem:</p>
  
  <pre><code>Element implicitly has an 'any' type because type 'ValuesMap' has no index signature.ts(7017)
  </code></pre>
  
  <p>Typescript are not recognise <code>ValuesMap</code> as an element with a index. If I change the <code>ValuesMap</code> to use <code>[key: string]</code> instead of <code>[key in ValuesList]</code> it works, but I would like to keep the <code>[key in ValuesList]</code></p>