Lorsque j'essaie de définir une fonction prototype, j'obtiens:
erreur TS2339: la propriété 'applyParams' n'existe pas sur le type 'Function'.
Function.prototype.applyParams = (params: any) => {
this.apply(this, params);
}
Comment résoudre cette erreur?
Définissez la méthode sur une interface nommée Function
dans un .d.ts
fichier. Cela entraînera fusion de déclaration avec le type global Function
:
interface Function {
applyParams(params: any): void;
}
Et vous ne voulez pas utiliser de fonction flèche pour que this
ne soit pas lié au contexte extérieur. Utilisez une expression de fonction régulière:
Function.prototype.applyParams = function(params: any) {
this.apply(this, params);
};
Maintenant, cela fonctionnera:
const myFunction = function () { console.log(arguments); };
myFunction.applyParams([1, 2, 3]);
function myOtherFunction() {
console.log(arguments);
}
myOtherFunction.applyParams([1, 2, 3]);