The interfaces in typescript are open, so you can add them in several places.
For example, numerical. You need to add this term to expanders, as well as to your observables. Here is an example:
interface KnockoutExtenders { numeric(target: any, precision: number): KnockoutObservableAny; } interface KnockoutObservableNumber { extend(data: any): KnockoutObservableNumber; } ko.extenders.numeric = function (target: KnockoutObservableNumber, digits) { var result = ko.computed({ read: function () { var value = target(); var toret: string = value.toString(); if (toret.length < digits) { toret = "0" + toret; } else if (toret.length > digits) { toret = toret.substring(0, digits); } return toret; }, write: target }); result(target()); return result; };
Here you can see the full sample: https://github.com/basarat/ChessClock/blob/d82a565ac9720cce00c75f099fcf7003f496755a/ChessClock/ChessClock/www/main.ts
source share