使用typescript定义原型函数

时间:2017-01-20 22:11:06

标签: typescript prototype

当我尝试定义原型函数时,我得到:

  

错误TS2339:属性' applyParams'在类型上不存在   '功能'

Function.prototype.applyParams = (params: any) => {
     this.apply(this, params);
}

如何解决此错误?

1 个答案:

答案 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]);