Typescript Eslint规则类中没有无效的this和fat arrow函数
我有以下课程:Typescript Eslint规则类中没有无效的this和fat arrow函数,typescript,eslint,arrow-functions,typescript-eslint,Typescript,Eslint,Arrow Functions,Typescript Eslint,我有以下课程: export class MyClass { private foos: Foo[]; constructor(foos: Foo[]) { this.foos = foos; } getByA = (myA: Mya): Foo => { return this.foos.find(foo => foo.a === myA) ?? unknownFoo(); }; } 不幸的是,在我的fat arrow函数中,我得到一个关于
export class MyClass {
private foos: Foo[];
constructor(foos: Foo[]) {
this.foos = foos;
}
getByA = (myA: Mya): Foo => {
return this.foos.find(foo => foo.a === myA) ?? unknownFoo();
};
}
不幸的是,在我的fat arrow函数中,我得到一个关于无效此的警告:
ESLint: Unexpected 'this'.(no-invalid-this)
我的eslint插件版本是4.15.1
除了禁用此规则之外,我还能做些什么使其正常工作吗?您会遇到此错误,因为当您创建箭头函数时,您正在创建一个可以在类的不同上下文中调用的对象。因此,当执行getByA
时,它可能处于此
不存在或不同的上下文中
一个选项是将上下文绑定到箭头函数:
getByA = (myA: Mya): Foo => {
return this.find(foo => foo.a === myA) ?? unknownFoo();
}.bind(this.foos);
有关此错误的更多信息以及如何在正确上下文中正确使用this
的示例,请查看。添加.bind(this.foos)
生成:TS2391:函数实现缺失或声明后未立即执行。TS7010:“bind”没有返回类型注释,它隐式地有一个“any”返回类型。
尝试只绑定this
并用this.foos
替换前面的this
。bind(this)
I getTS2391:函数实现丢失或声明后没有立即执行。
它在TypeScript中对您有效吗?