以下typescript中的代码片段并不像我所说的那样工作。应该不言而喻:

declare interface Date {
    toUrlString(): string;
}

Date.prototype.toUrlString = () => {
    return this.toISOString().substring(0, 10);
};

document.write(
    new Date().toUrlString()
    // Error: Object [object Window] has no method 'toISOString'
);

编译的代码是:
var _this = this;
Date.prototype.toUrlString = function () {
    return _this.toISOString().substring(0, 10);
};
document.write(new Date().toUrlString());

我该怎么解决?

最佳答案

“胖箭头”表示法调用词汇范围规则。如果不需要,请使用传统函数:

Date.prototype.toUrlString = function() {
    return this.toISOString().substring(0, 10);
};

09-16 14:44