如何忽略或关闭此错误,或使其成为警告而不是错误?
我的应用程序不会编译,因为它。
TS2367:这种比较似乎是无意的,因为类型'true'和'false'没有重叠。
下面是一个例子:
var includeTestInfo = true;
var test = "";
if (includeTestInfo==false) {
test = "test";
}
看起来,忽略一个特定的错误是open feature request吗?
相似但不相同的文章here。
从这篇文章中获得了一些建议:
- tsconfig.json选项忽略特定错误
- tsignore注解,带有忽略错误代码的选项
- tsconfig.json将特定错误转换为警告
- 支持警告的类型脚本
- typescript全局跟踪外部文件夹中的所有错误,而不是内嵌(github问题中的注解摘要)
- 添加或链接到代码注解错误的解决方案
1条答案
按热度按时间yzuktlbb1#
TypeScript在这里正确。TypeScript * 知道 *
includeTestInfo
只能是true
。这是:
创建一个类型为
boolean
的变量,但该类型在此作用域中被缩小为true
,因为TypeScript知道没有其他赋值给它。然后,您执行以下操作:
TypeScript知道
true
永远不会是false
,并认为这可能是一个错误。禁用类型错误通常不是个好主意。最好把它修好。
功能等效的代码片段如下:
这没有警告,因为TypeScript总是允许truthy/falsy检查,即使它知道一个变量是truthy/falsy。这使您可以解决缩小布尔值类型的问题。
可以争辩说,99%的时候,无论如何都不建议将布尔值与布尔值进行比较,但这会成为观点,所以我不会发表意见。
或者您可以Assert
true
as boolean
,这将防止编译器将值的类型缩小到true
。但这有点笨拙。
最后,应该注意的是,这是TypeScript隐式缩小
boolean
类型的一个怪癖。对于字符串,情况并非如此,例如:可能有一个GitHub问题解释了这种差异以及为什么存在,我目前没有找到。