我错过了什么吗?我在同一个文件中有其他原型,它们按预期工作。
module StACS
export module NumberPrototypes {
export function initializer() {
// OTHER PROTOTYPES REMOVED FOR SPACE
Number.prototype.toPureNumber = function(): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
}
}
}
interface Number {
toMoney(decimals?: number, decimalCharacter?: string, thousandsCharacter?: string): string;
toPercentage(decimals?: number, showSymbol?: boolean): string;
toPureNumber(): number;
}
My Observable:
productPrice: KnockoutObservable<number>:
productsTabView.productModel().productPrice()
结果:
"$25.00"
当我尝试这样做时:
productsTabView.productModel().productPrice().toPureNumber()
我收到以下错误:
Uncaught TypeError: productsTabView.productModel(...).productPrice(...).toPureNumber is not a function
at <anonymous>:2:47
at Object.InjectedScript._evaluateOn (<anonymous>:895:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:828:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
答案 0 :(得分:0)
好的,我终于弄明白了我的问题。可悲的是,这里的任何人都不会想到因为你错过了一个关键部分。即使将KO Observable设置为数字,我也会附加一个自定义扩展器。此扩展程序执行格式化并返回字符串,而不是数字。
这就是我得到这个的原因:
productsTabView.productModel().productPrice()
"$0.00"
我将原型改为:
String.prototype.toPureNumber = function (): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
现在这可以按预期工作:
productsTabView.productModel().productPrice().toPureNumber()
0
答案 1 :(得分:-1)
以下作品:
interface Number {
toPureNumber(): number;
}
Number.prototype.toPureNumber = function(): number {
var self = this;
return parseFloat(self.toString().replace(/[^\d.-]/g, ''));
}
var foo = 123.3;
var bar = foo.toPureNumber();
console.log(bar);
致电initializer
。