javascript - Add extension to base classes in Typescript -


i adding method on number in javascript. want make method available in typescript, have no idea how added via definition files.

my method is

number.prototype.formatmoney = function(c, d, t){     var n = this,         c = isnan(c = math.abs(c)) ? 2 : c,         d = d == undefined ? "." : d,         t = t == undefined ? "," : t,         s = n < 0 ? "-" : "",         = parseint(n = math.abs(+n || 0).tofixed(c)) + "",         j = (j = i.length) > 3 ? j % 3 : 0;     return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + math.abs(n - i).tofixed(c).slice(2) : ""); }; 

i thinking of adding definition file, gives me error 'duplicate identifier number'

declare module number{     export var formatmoney:function; } 

in addition defining method on number's prototype, needs defined on number interface:

interface number {     formatmoney(c, d, t): string;    } 

you can define anywhere in application , typescript merge existing number interface via declaration merging.

by way, highly recommend give variables in function better names c, d, t, s, j, etc... since variables don't have descriptive name, take developer longer understand variables mean , makes code less maintainable.

additionally, recommend giving parameters type information , use default parameters:

interface number {     formatmoney(value: number, decimalmark?: string, thousandsseparator?: string): string;   }  number.prototype.formatmoney = function(value: number, decimalmark = ".", thousandsseparator = ",") {     // etc... }; 

also, take note i not declared in function.


Comments