如何忽略或关闭此错误或使其成为警告而不是错误?
因为它,我的应用程序将无法编译。
TS2367:这种比较似乎是无意的,因为类型“true”和“false”没有重叠。
这是一个例子:
var includeTestInfo = true;
var test = "";
if (includeTestInfo==false) {
test = "test";
}
Run Code Online (Sandbox Code Playgroud)
看起来,忽略特定错误是一个开放的功能请求?
类似但不一样的帖子在这里。
从这篇文章中获得的一些建议:
TypeScript 在这里是正确的。TypeScript知道这includeTestInfo只能是true.
这:
var includeTestInfo = true;
Run Code Online (Sandbox Code Playgroud)
创建一个类型为 的变量boolean,但该类型被缩小true到此范围内,因为 TypeScript 知道没有其他分配给它。
然后你做:
if (includeTestInfo === false) ...
Run Code Online (Sandbox Code Playgroud)
TypeScript 知道这true永远不会发生false,并认为这可能是一个错误。
禁用类型错误通常是一个坏主意。最好正确解决这个问题。
功能等效的代码片段如下:
var includeTestInfo = true;
var test = "";
if (!includeTestInfo) { // fine
test = "info";
}
Run Code Online (Sandbox Code Playgroud)
这没有警告,因为即使 TypeScript 知道变量是真/假,它也始终允许真/假检查。这可以让您解决这种类型缩小的布尔值的怪癖。
有人可能会说,99% 的情况下,无论如何都不建议将布尔值与布尔文字进行比较,但这会成为观点,所以我不会发表意见。
或者您可以断言true as boolean,这将阻止编译器将值的类型缩小为true。
var includeTestInfo = true as boolean;
var test = "";
if (includeTestInfo === false) { // fine
test = "info";
}
Run Code Online (Sandbox Code Playgroud)
但这有点笨拙。
最后,应该指出的是,这是 TypeScript 隐式缩小类型的一个怪癖boolean。对于字符串则不然,例如:
var includeTestInfo = 'a';
var test = "";
if (includeTestInfo === 'b') { // fine
test = "info";
}
Run Code Online (Sandbox Code Playgroud)
可能有一个 GitHub 问题解释了这种差异及其存在的原因,但我目前还没有找到。
| 归档时间: |
|
| 查看次数: |
5822 次 |
| 最近记录: |