Javascript 原型不是有效的函数

Javascript 原型不是有效的函数,javascript,typescript,prototype,Javascript,Typescript,Prototype,我错过什么了吗?我在同一个文件中有其他原型,它们按预期工作 module StACS export module NumberPrototypes { export function initializer() { // OTHER PROTOTYPES REMOVED FOR SPACE Number.prototype.toPureNumber = function(): number {

我错过什么了吗?我在同一个文件中有其他原型,它们按预期工作

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; 
}
我的可观察到:

productPrice: KnockoutObservable<number>:
productsTabView.productModel().productPrice()
当我尝试这样做时:

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)
以下工作:

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);
修理
调用初始化器

好吧,我终于解决了我的问题。可悲的是,这里的任何人都不会明白,因为你遗漏了一个关键部分。即使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

不应该这样吗?Number.prototype.toPureNumber=functionnumber{…}您已经调用了初始化器吗?抱歉,我不得不四处奔波。是,我在页面加载事件中调用初始值设定项。我还有另外两个原型在工作。如果你读过我上面的评论,在初始化器函数中还有另外两个原型在文档加载事件中被调用。另外两个原型正在工作。
productsTabView.productModel().productPrice().toPureNumber()
0