当我尝试定义原型函数时,我得到:
错误TS2339:属性' applyParams'在类型上不存在 '功能'
Function.prototype.applyParams = (params: any) => {
this.apply(this, params);
}
如何解决此错误?
答案 0 :(得分:17)
在Function
文件中名为.d.ts
的接口上定义方法。这将导致declaration merge使用全局Function
类型:
interface Function {
applyParams(params: any): void;
}
并且您不希望使用箭头函数,以便this
不会绑定到外部上下文。使用常规函数表达式:
Function.prototype.applyParams = function(params: any) {
this.apply(this, params);
};
现在这将有效:
const myFunction = function () { console.log(arguments); };
myFunction.applyParams([1, 2, 3]);
function myOtherFunction() {
console.log(arguments);
}
myOtherFunction.applyParams([1, 2, 3]);