我已经犯了几次这个错误-想知道是否有ESLint或TSLint规则可以发现它
if (this.isBrowser && this.imageURL) {.....}
private isBrowser(): boolean{
return isPlatformBrowser(this.platformId);
}
使用
this.isBrowser
总是会返回true,因为它是一个函数是事实。我必须使用get isBrowser() {}
或this.isBrowser()
ESLint或TSLint可以检查并警告将对函数的调用写为属性访问器吗?
最佳答案
短绒可以处理属性获取器的唯一情况是当它们可能是无操作时,存在TSLint / ESLint no-unused-expression
rule:
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
保留为布尔值。