TSLint ESLint - 当函数作为属性访问时发出警告?

时间:2018-05-20 10:25:25

标签: javascript typescript eslint tslint

我犯了几次这个错误 - 想知道是否有ESLint或TSLint规则会发现它

if (this.isBrowser && this.imageURL) {.....}

private isBrowser(): boolean{
    return isPlatformBrowser(this.platformId);
}

使用this.isBrowser将始终返回true,因为它是一个函数是真实的。我必须使用get isBrowser() {}this.isBrowser()

ESLint或TSLint是否可以检查并警告对函数的调用是否正在写为属性访问器?

1 个答案:

答案 0 :(得分:2)

属性getter可以由linters处理的唯一情况是,当它们可能是no-op时,有TSLint / ESLint no-unused-expression rule

this.isBrowser; // causes linter error

Chai断言就是这种情况。在任何其他情况下,this.isBrowser都不是无操作。

if (this.isBrowser)是检查isBrowser成员是否真实的有效代码段。它可能对方法if (this.isBrowser) this.isBrowser()有效。

使用TypeScript解决此问题的一种方法是不要对条件

保持懒惰
if (this.isBrowser === true && this.imageURL) {.....}

如果isBrowser是函数,则会导致类型错误。

这是一个可能由不确定的代码样式引起的问题。如果检查它是否是浏览器的方法被称为isBrowser,那么如何调用布尔属性?方法和属性可能混淆且不能共存的事实表明返回布尔值的方法可能具有不同的名称,例如, getIsBrowser,而isBrowser保留为布尔值。