我正在扩展Number对象,因此会有一个函数toKM()将距离(以米为单位)转换为公里。
当我使用以下语法时(IMO是Typescript的默认语法),函数无效。
interface Number {
toKM(): number
}
Number.prototype.toKM = () => {
return this / 1000
}
let alfa = 3456
document.write(alfa.toKM())

当我使用"传统"形式:
interface Number {
toKM(): number
}
Number.prototype.toKM = function() {
return this / 1000
}
let alfa = 3456
document.write(alfa.toKM())

是否存在新语法不起作用的特殊情况?
答案 0 :(得分:3)
如果您使用箭头函数,Typescript将从声明上下文中捕获此函数,如果您在es6下面定位,则代码将编译为此函数:
var _this = this;
Number.prototype.toKM = function () {
return _this / 1000;
};
如果你使用纯JS(es2015或更高版本),箭头函数将没有工作事件,因为它们的行为将等同于上面的JS。
您需要使用常规函数并指定this
Number.prototype.toKM = function(this: number) {
return this / 1000
}