我试图在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
的方法。我该怎么办?
答案 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;
});