Khi tôi cho phép noImplicitThis
trong tsconfig.json
, tôi nhận được lỗi này cho đoạn mã sau:'này' ngầm có kiểu 'bất kỳ' bởi vì nó không có một loại chú thích
'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`
});
Thêm gõ this
các thông số gọi lại kết quả trong các lỗi tương tự:
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
Một cách giải quyết là để thay thế this
với các đối tượng:
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
Nhưng sửa lỗi thích hợp cho lỗi này là gì?
UPDATE: Hóa ra thêm một gõ this
để gọi lại thực sự giải quyết các lỗi. Tôi đã nhìn thấy những lỗi vì tôi đã sử dụng một chức năng mũi tên với một loại chú thích cho this
:
Bạn đã thử phiên bản TypeScript 2.1 hoặc phiên bản hàng đêm chưa? –
@DanielRosenwasser 2.1.4 – tony19
Và bây giờ tôi thấy lý do WebStorm và TS sân chơi đã phàn nàn: Tôi đã sử dụng một chức năng mũi tên trong khi cung cấp một chú thích kiểu cho 'this'. – tony19