{"action":"closed","issue":{"url":"https://api.github.com/repos/Microsoft/TypeScript/issues/7114","repository_url":"https://api.github.com/repos/Microsoft/TypeScript","labels_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/7114/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/7114/comments","events_url":"https://api.github.com/repos/Microsoft/TypeScript/issues/7114/events","html_url":"https://github.com/Microsoft/TypeScript/issues/7114","id":134287196,"number":7114,"title":"\"Casting to method\" issue","user":{"login":"Xample","id":944605,"avatar_url":"https://avatars.githubusercontent.com/u/944605?v=3","gravatar_id":"","url":"https://api.github.com/users/Xample","html_url":"https://github.com/Xample","followers_url":"https://api.github.com/users/Xample/followers","following_url":"https://api.github.com/users/Xample/following{/other_user}","gists_url":"https://api.github.com/users/Xample/gists{/gist_id}","starred_url":"https://api.github.com/users/Xample/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Xample/subscriptions","organizations_url":"https://api.github.com/users/Xample/orgs","repos_url":"https://api.github.com/users/Xample/repos","events_url":"https://api.github.com/users/Xample/events{/privacy}","received_events_url":"https://api.github.com/users/Xample/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Microsoft/TypeScript/labels/Question","name":"Question","color":"d4c5f9"}],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-02-17T13:59:59Z","updated_at":"2016-02-17T18:23:32Z","closed_at":"2016-02-17T18:23:32Z","body":"Hi, I faced a problem unable to cast an object as a method. While this is handled automatically using an if / else block (and congratulation to the guys who implemented this), this is not working yet into a switch case nor manually. Here is [my code](http://www.typescriptlang.org/Playground#src=%0Ainterface%20MethodInterface%7B%0A%20%20()%3A%20string%3B%0A%7D%0A%0Ainterface%20FocusRule%0A%7B%0A%09surprise%3F%3AMethodInterface%7Cstring%0A%7D%0A%0Afunction%20test(anObject%3AFocusRule)%0A%7B%0A%09var%20actionOrString%3AMethodInterface%7Cstring%20%3D%20anObject.surprise%3B%0A%09%0A%09%20%20%20%20%20%20%20%20%20%20switch(typeof%20actionOrString)%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20There%20is%20no%20way%20to%20prevent%20the%20compilation%20error%20here%20(even%20casting%20the%20actionOrString)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%22function%22%20%3A%20%3CMethodInterface%3EactionOrString()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F**%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%20If%20a%20string%2C%20maybe%20we%20are%20using%20a%20helper%20or%20a%20query%20selector%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%22string%22%20%20%20%3A%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%09%0A%09%0A%09%2F%2F%20Using%20a%20if%20%2F%20else%20is%20however%20ok%0A%09%0A%09if%20(typeof%20actionOrString%20%3D%3D%3D%20%22function%22)%0A%09%7B%0A%09%09actionOrString()%3B%0A%09%7D%0A%09else%0A%09%7B%0A%09%09%2F%2F%20Here%20this%20is%20normal%20to%20fail%E2%80%A6%0A%09%09actionOrString()%3B%0A%09%7D%0A%7D%0A%0A%0A) to reproduce the error:\r\n\r\n"}}