Je comprends le message d'erreur:Type '() => vide' est incessible à taper '() => {}
Type '() => vide' est incessible à taper'() => {} '
Eh bien, en quelque sorte, il me dit qu'il y a un problème de moulage de type. Cependant, je ne peux pas comprendre pourquoi le compilateur pense que les types ne sont pas les mêmes.
Le fond du code est que j'ai une classe de type qui reçoit une fonction et la stocke ensuite en tant que membre. Je veux être en mesure d'initialiser le membre avec une fonction vide 'noop' afin qu'il ne doive pas vérifier null avant utilisation.
J'ai réussi à réduire problème à le code de test exemple suivant:
export class Test {
private _noop:() => {};
constructor(
) {
this._noop =() => { }; //I guess the compiler thinks this is returning in a new empty object using the json syntax
this._noop = this.noop; //I would have thought this shoud definitely work
this._noop =() => undefined; //This does works
}
public noop(): void {
//Nothing to see here...
}
}
Les trois déclarations du constructeur sont tous destinés à faire le même travail: initialiser le membre avec aucune fonction de fonctionnement. Cependant, seule la dernière instruction fonctionne:
this._noop =() => undefined;
Les deux autres instructions produisent l'erreur de compilation.
Est-ce que quelqu'un sait pourquoi le compilateur ne semble pas correspondre aux types?
Merci qui a du sens. –