Wenn ich ermöglichen noImplicitThisin tsconfig.json, bekomme ich diesen Fehler für den folgenden Code:
'this' implicitly has type 'any' because it does not have a type annotation.
class Foo implements EventEmitter {
on(name: string, fn: Function) { }
emit(name: string) { }
}
const foo = new Foo();
foo.on('error', function(err: any) {
console.log(err);
this.emit('end'); // error: `this` implicitly has type `any`
});
Das Hinzufügen einer Eingabe thiszu den Rückrufparametern führt zu demselben Fehler:
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
Eine Problemumgehung besteht darin, sie thisdurch das Objekt zu ersetzen :
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
Aber was ist die richtige Lösung für diesen Fehler?
UPDATE: Es stellt sich heraus, dass das Hinzufügen eines Typs thiszum Rückruf tatsächlich den Fehler behebt. Ich habe den Fehler gesehen, weil ich eine Pfeilfunktion mit einer Typanmerkung für Folgendes verwendet habe this:
this.
