{"action":"opened","issue":{"url":"https://api.github.com/repos/aurelia/templating/issues/205","labels_url":"https://api.github.com/repos/aurelia/templating/issues/205/labels{/name}","comments_url":"https://api.github.com/repos/aurelia/templating/issues/205/comments","events_url":"https://api.github.com/repos/aurelia/templating/issues/205/events","html_url":"https://github.com/aurelia/templating/issues/205","id":116430597,"number":205,"title":"Make .d.ts interface members optional","user":{"login":"niieani","id":563469,"avatar_url":"https://avatars.githubusercontent.com/u/563469?v=3","gravatar_id":"","url":"https://api.github.com/users/niieani","html_url":"https://github.com/niieani","followers_url":"https://api.github.com/users/niieani/followers","following_url":"https://api.github.com/users/niieani/following{/other_user}","gists_url":"https://api.github.com/users/niieani/gists{/gist_id}","starred_url":"https://api.github.com/users/niieani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/niieani/subscriptions","organizations_url":"https://api.github.com/users/niieani/orgs","repos_url":"https://api.github.com/users/niieani/repos","events_url":"https://api.github.com/users/niieani/events{/privacy}","received_events_url":"https://api.github.com/users/niieani/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-11-11T22:01:08Z","updated_at":"2015-11-11T22:01:08Z","closed_at":null,"body":"It would be great to get code completion for Views/Templates when using TypeScript. One way to do it now is to make those classes implement some interfaces, like `ViewNode`.\r\nUnfortunately the implementations are marked as obligatory, while they're really not (at least not for building on top of Aurelia). \r\nPerhaps instead of this:\r\n```ts\r\n  export interface ViewNode {\r\n    bind(bindingContext: Object, overrideContext?: Object): void;\r\n    attached(): void;\r\n    detached(): void;\r\n    unbind(): void;\r\n  }\r\n```\r\nWe could have this:\r\n```ts\r\n  export interface ViewNode {\r\n    bind?(bindingContext: Object, overrideContext?: Object): void;\r\n    attached?(): void;\r\n    detached?(): void;\r\n    unbind?(): void;\r\n  }\r\n```\r\nThen we could:\r\n```ts\r\nexport class Welcome implements ViewNode {\r\n    ///...\r\n}"}}