Example:
module app.models { export class contact { Id: number = 0; Name = ko.observable(''); SurName = ko.observable(''); FullName; constructor () { this.FullName = ko.computed(()=>{ return this.Name() + " " + this.SurName(); }); } } } module app.viewModels{ export class contacts { items = ko.observableArray([]); addContact(){ this.items.push(new app.models.contact); }; } } ko.extenders['logChange'] = (target, option)=>{ target.subscribe(function(newValue) { console.log(option + ": " + newValue); }); return target; }; ko.bindingHandlers['hasFocus'] = { init: (element, valueAccessor)=>{ }, update: function(element, valueAccessor) { var value = valueAccessor(); if (ko.utils.unwrapObservable(value)) element.focus(); else element.blur(); } }; var viewModel = new app.viewModels.contacts; ko.applyBindings(viewModel);