2017-10-16 3 views
0

Im tryin passer le paramètre « ceci » à une fonction de cette façon:argument de type « vide » est incessible au paramètre de type « fonction »

modalshow = new Confirmation(false, this.changea(this), this.changer); 

et la classe de confirmation est comme ceci:

constructor(
    public show: boolean, 
    public actionAccept: Function, 
    public actionReject: Function 
) {} 

Mais je l'erreur persiste:

Argument of type 'void' is not assignable to parameter of type 'Function'

Alors, je ne sais pas quel est le problème et que dois-je faire.

+0

Vous passez la ** valeur ** renvoyée en appelant 'this.changea (this)' et la ** valeur ** de 'this.changer'. Que sont-ils? BTW, "void" n'est pas un [ECMAScript * Type *] (http://ecma-international.org/ecma-262/8.0/#sec-ecmascript-language-types). – RobG

Répondre

1

Le second argument que vous transmettez est this.changea(this) - le résultat est que vous transmettez la valeur de retour de la fonction changea, et non la fonction elle-même.

Si vous voulez passer une fonction comme argument, et préserver le sens de this, vous pouvez utiliser:

modalshow = new Confirmation(false,() => this.changea(this), this.changer); 

Vous avez maintenant enveloppé votre code dans une fonction, qui n'a pas encore été exécuté .

+1

Merci, cela a parfaitement fonctionné –