プロトタイプ関数を定義しようとすると、次のようになります。
エラーTS2339:プロパティ「applyParams」はタイプ「Function」に存在しません。
Function.prototype.applyParams = (params: any) => {
this.apply(this, params);
}
このエラーを解決する方法は?
.d.ts
ファイルのFunction
という名前のインターフェイスでメソッドを定義します。これにより、グローバル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]);