Typescript 在类型的原型中保留词汇上下文

Typescript 在类型的原型中保留词汇上下文,typescript,Typescript,我试图在TypeScript中向Number的原型追加一个闭包,但是在编译后,这个绑定到窗口对象,而不是应用到调用方法的数字 interface Number { pad(s: number): string; } Number.prototype.pad = (size: number) => { var s: string = String(this); while (s.length < (size || 2)) { s = "0" + s; }

我试图在TypeScript中向
Number
的原型追加一个闭包,但是在编译后,
这个
绑定到
窗口
对象,而不是应用到调用方法的数字

interface Number {
    pad(s: number): string;
}

Number.prototype.pad = (size: number) => {
  var s: string = String(this);
  while (s.length < (size || 2)) {
    s = "0" + s;
  }
  return s;
};

我在StackOverflow和TypeScript文档中搜索了数小时,但没有找到解除此绑定的方法。我能做什么?

使用类会更好吗

export class Number {

public pad(size: number) {
    var s: string = String(this);
    while (s.length < (size || 2)) {
        s = "0" + s;
    }
    return s;
};
}


//compiled javascript

define(["require", "exports"], function(require, exports) {
   var Number = (function() {
       function Number() {}
       Number.prototype.pad = function(size) {
           var s = String(this);
           while (s.length < (size || 2)) {
               s = "0" + s;
       }
        return s;
    };;
    return Number;
})();
exports.Number = Number;
});
导出类编号{
公共pad(尺寸:数量){
var s:string=string(this);
而(s.长度<(尺寸| 2)){
s=“0”+s;
}
返回s;
};
}
//编译javascript
定义([“需要”、“导出”]、函数(需要、导出){
变量编号=(函数(){
函数号(){}
Number.prototype.pad=功能(尺寸){
var s=字符串(this);
而(s.长度<(尺寸| 2)){
s=“0”+s;
}
返回s;
};;
返回号码;
})();
出口。数量=数量;
});
当转换时,这将成为有界的

不要使用箭头功能

Number.prototype.pad = function(size: number)  {

为什么它们会被束缚?有时我也会发现同样的“问题”,我希望能有一个更深入的解释。
为什么它们会有界
有些用例需要这样做,特别是对于
这个
。这里有一个视频展示了这些用例:感谢+1,太糟糕了,假设“胖箭头”语法不能用作@Marcelo Camargo。老实说,人们希望将其词汇绑定的次数远远超过了人们希望调用上下文确定的
this
的次数
Number.prototype.pad = function(size: number)  {