请帮助我理解为什么这适用于 Number 而不适用于 Date。
declare interface Number {
toPreferredStringFormat(): string;
}
declare interface Date {
toPreferredStringFormat: string;
}
(function () {
// OK
Number.prototype.toPreferredStringFormat = () => {
return this.toString() + " preferred!";
};
// ERROR (why?!)
Date.prototype.toPreferredStringFormat = () => {
return this.toString() + " preferred!";
};
})();
Run Code Online (Sandbox Code Playgroud)
我做得对吗?
谢谢!
当我想用新方法扩展 Date 原型时,对我有用的是:
declare global {
interface Date{
yyyymmdd: () => string;
}
}
Run Code Online (Sandbox Code Playgroud)
我从这里拿起这个
您的两个声明之间存在细微差别......
toPreferredStringFormat(): string; // has ()
toPreferredStringFormat: string; // doesn't have ()
Run Code Online (Sandbox Code Playgroud)
这两个中的第二个表示该属性是一个字符串,第一个表示它是一个函数。
这是一个完整的工作示例,使用长篇大论的方式说您希望函数返回一个字符串,这使得它比括号的存在更明显,但这也有效:
declare interface Number {
toPreferredStringFormat: () => string;
}
declare interface Date {
toPreferredStringFormat: () => string;
}
(function () {
// OK
Number.prototype.toPreferredStringFormat = () => {
return this.toString() + " preferred!";
};
// ERROR (why?!)
Date.prototype.toPreferredStringFormat = () => {
return this.toString() + " preferred!";
};
})();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8210 次 |
| 最近记录: |