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



>我已经犯了几次这个错误 - 并且想知道是否有ESLint或TSLint规则可以发现它

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

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

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

属性获取者可以由 linters 处理的唯一情况是当它们可能没有操作时,有 TSLint/ESLintno-unused-expression规则:

this.isBrowser; // causes linter error

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

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

用TypeScript解决这个问题的一种方法是不要对条件偷懒

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

如果isBrowser函数,这将导致类型错误。

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

最新更新