当我在tsconfig中启用noImplicitThis。json,我得到这个错误的以下代码:
'this'隐式具有类型'any',因为它没有类型注释。
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`
});
在回调参数中添加类型化this会导致相同的错误:
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
一个解决方法是用对象替换它:
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
但是如何正确地修复这个错误呢?
更新:事实证明,向回调中添加类型化this确实解决了错误。我看到了错误,因为我正在使用一个带有类型注释的箭头函数: