将词汇上下文保留在类型

时间:2015-07-02 19:53:22

标签: typescript

我试图在TypeScript中向Number的原型附加一个闭包,但是,在编译后,this被绑定到window对象而不是应用于调用方法的编号。

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;
};

这应该可以正常工作,但this在翻译时会受到限制:

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

我在StackOverflow和TypeScript文档中搜索了几个小时,但没有找到解绑this的方法。我该怎么办?

2 个答案:

答案 0 :(得分:2)

  

这在翻译时变得有限

不要使用箭头功能

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

答案 1 :(得分:0)

使用课程

会更好吗?
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;
});