metatags description typescript typescript2.0

typescript - description - meta angular 4



''this'' implícitamente tiene el tipo ''any'' porque no tiene una anotación de tipo (1)

Cuando noImplicitThis en tsconfig.json , tsconfig.json 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 tipeado this a 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 this con 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 tipeado this a la devolución de llamada de hecho aborda el error. Estaba viendo el error porque estaba usando una función de flecha con una anotación de tipo para this :


El error se soluciona insertando this con una anotación de tipo como el primer parámetro de devolución de llamada. Mi intento de hacerlo fue fallido al cambiar simultáneamente la devolución de llamada a una función de flecha:

foo.on(''error'', (this: Foo, err: any) => { // DON''T DO THIS

Debería haber sido esto:

foo.on(''error'', function(this: Foo, err: any) {

o esto:

foo.on(''error'', function(this: typeof foo, err: any) {

Se creó un github.com/Microsoft/TypeScript/issues/13768 GitHub para mejorar el mensaje de error del compilador y resaltar el error de gramática real con this y las funciones de flecha.