title: Strange behavior using Lodash and Typescript
body: <p>I can't understand why booleans is of type boolean[] ...</p>
  
  <pre><code>    const obj: { [key: number]: string } = { 1: "Hi", 2: ", there" };
      const booleans = _.chain(obj)
          .keys()
          .map((key: number) =&gt; ({ ItemKey: key, ItemText: obj[key] }))
          .value();
  </code></pre>
  
  <p>Any clue?! The following code produces a variable with the correct type of { ItemKey: number, ItemText: string }[]:</p>
  
  <pre><code>    const obj: { [key: number]: string } = { 1: "Hi", 2: ", there" };
      const correctType = _.chain(obj)
          .keys()
          .map(key =&gt; ({ ItemKey: parseInt(key), ItemText: obj[parseInt(key)] })) // key is inferred to be string, because keys() returns string[]
          .value();
  </code></pre>
  
  <p>I'm using Typescript 2.0.10 for compilation, but even VS Code with Typescript 2.2.2 says the same thing with the intellisense.</p>