打字稿对象文字“this”关键字

Arv*_*man 7 javascript this object-literal typescript

this在对象文字中的函数内部使用时的预期行为是什么?

例如,假设我有一个类型foo,它只有一个名为的函数bar而没有其他属性。但是在该fooObj.bar方法中,我可以访问this.baz(其中baz不是 type 的属性foo)我看不到任何错误。不应该打字稿错误,因为fooObj它没有baz吗?

type foo = {
    bar(): void;
}
var fooObj: foo = {
    bar: () => {
        // TS does not error out when I access this.baz
        console.log(this.baz);
    }
} 
Run Code Online (Sandbox Code Playgroud)

ali*_*r49 5

设置"noImplicitThis": true编译器选项是您现在启用此功能的方式。此拉取请求已启用,输入this对象文字。Aleksey L 最初在对该问题的评论中建议了这个编译器选项,但当时它并没有那样工作。

  • 这是实际的解决方案。`noImplicitThis` 使 `this` 关键字在对象字面量中按照您期望的方式工作。 (2认同)