<!-- BUGS: Please use this template. --> <!-- QUESTIONS: This is not a general support forum! Ask Qs at http://stackoverflow.com/questions/tagged/typescript --> <!-- SUGGESTIONS: See https://github.com/Microsoft/TypeScript-wiki/blob/master/Writing-Good-Design-Proposals.md --> **TypeScript Version:** master at a633652f08db9efe43ea63df76ecc6edadbb89c5 (Sep 27, 2016) **Code** ``` ts interface Fun<T> { (value: T) } function switcheroo<T>(component: Fun<T>): Fun<T> { return component } function MyComponent(value: string) { return { type: OtherComponent } } export const OtherComponent = switcheroo(MyComponent) ``` **Expected behavior:** Expected type of `MyComponent` to be `(value: string) => {type: Fun<string>}` and type of `OtherComponent` to be `Fun<string>` **Actual behavior:** Both types are `any`. This is likely related or caused by the same thing as https://github.com/Microsoft/TypeScript/issues/5487 but I thought I'd contribute another test case.