**TypeScript Version:** 3.1.0-dev.201xxxxx **Search Terms:** function parameter type inference keyof generic **Code** ```ts function foo1<T>(foo: T, bar: {[key in keyof {foo: number}] : (x: T) => number }) { } function foo2<T>(foo: T, bar: {[key in keyof T] : (x: T) => number }) { } foo1({foo: 1}, {foo: x1 => x1.foo + 1}) foo2({foo: 1}, {foo: x2 => x2.foo + 1}) ``` **Expected behavior:** `x2` has type `{foo:number}` **Actual behavior:** Compiler error `TS7006: Parameter 'x2' implicitly has an 'any' type.` `x1` has type `{foo:number}` but `x2` has type `any` **Playground Link:** [Playground](http://www.typescriptlang.org/play/#src=function%20foo1%3CT%3E(foo%3A%20T%2C%20qwe%3A%20%7B%5Bkey%20in%20keyof%20%7Bfoo%3A%20number%7D%5D%20%3A%20(x%3A%20T)%20%3D%3E%20number%20%7D)%20%3A%20any%20%7B%0D%0A%20%20return%20%7B%7D%20as%20any%0D%0A%7D%0D%0A%0D%0Afunction%20foo2%3CT%3E(foo%3A%20T%2C%20qwe%3A%20%7B%5Bkey%20in%20keyof%20T%5D%20%3A%20(x%3A%20T)%20%3D%3E%20number%20%7D)%20%3A%20any%20%7B%0D%0A%20%20return%20%7B%7D%20as%20any%0D%0A%7D%0D%0A%0D%0Aconst%20f1%20%3D%20foo1(%7Bfoo%3A%201%7D%2C%20%7Bfoo%3A%20x%20%3D%3E%20x.foo%20%2B%201%7D)%0D%0Aconst%20f2%20%3D%20foo2(%7Bfoo%3A%201%7D%2C%20%7Bfoo%3A%20x%20%3D%3E%20x.foo%20%2B%201%7D)%0D%0A)