Cuando activo noImplicitThisen tsconfig.json, consigo este error para el siguiente código:
'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`
});
Agregar un tipo thisa los parámetros de devolución de llamada da como resultado el mismo error:
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
Una solución alternativa es reemplazar thiscon el objeto:
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
Pero, ¿cuál es la solución adecuada para este error?
ACTUALIZACIÓN: Resulta que agregar un escrito thisa la devolución de llamada soluciona el error. Veía el error porque estaba usando una función de flecha con una anotación de tipo para this:
this.
