当我传递方法引用时,让 TS 警告我



当我将函数引用作为参数传递给另一个函数,然后在某处调用它时,它会丢失"this"。为了防止它,我必须将方法转换为箭头功能。以下是我的意思的例证:

class Meeseeks{
  private line="I'm mister Meeseeks";
  lookAtMe(){ console.log(this.line+', look at me!'); }
}
// somewhere else:
let mr = new Meeseeks();
mr.lookAtMe();/// ok, prints fine
function callIt(fn:Function){ fn(); }
callIt(mr.lookAtMe);/// this one throws "Uncaught TypeError: Cannot read property 'line' of undefined"

所以修复它的唯一方法是将"lookAtMe"变成一个箭头函数:

  lookAtMe = () =>  console.log(this.line+', look at me!'); 

我的问题是:当我使用函数引用时,TypeScript 可以警告我吗?因为我讨厌运行时错误,因为它们可以在编译时被捕获,这就是为什么我首先使用 TypeScript(我非常喜欢严格类型的语言(。现在,为了防止它,我使所有方法都成为箭头函数,这对继承不利。

您知道任何 tsconfig 条目或 tslint 条目?

不,没有办法直接警告这一点。

有人建议ESLint实现它,但未实施。

您可以做的是使用仅箭头函数 TSLint 规则来防止行为首先发生。

最新更新