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 get
TS2391:函数实现丢失或声明后没有立即执行。
它在TypeScript中对您有效吗?