Khi tôi cho phép noImplicitThistrong tsconfig.json, tôi nhận được lỗi này cho đoạn mã sau:
'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`
});
Việc thêm một đã nhập thisvào các tham số gọi lại dẫn đến cùng một lỗi:
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
Một cách giải quyết là thay thế thisbằng đối tượng:
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
Nhưng cách khắc phục thích hợp cho lỗi này là gì?
CẬP NHẬT: Hóa ra việc thêm một đã nhập thisvào lệnh gọi lại thực sự giải quyết được lỗi. Tôi gặp lỗi vì tôi đang sử dụng hàm mũi tên với chú thích loại cho this:
this.
