我知道下面的代码是愚蠢的。但实时可能在使用相同类型的两个不同数据进行编译时。
if (false === true) {}// getting error
运算符'==='不能应用于类型'false'和'true'
但是Object.is()
正在接受此不同的数据而没有任何错误,并且它返回false
我知道他们之间的difference。但是为什么打字机语法错误同时为什么Object.is()
没有抛出那个错误。
此错误信息也是正确的?或不?
运算符'==='无法应用于类型'false'和'true 。它应该像operator '===' cannot be applied to types 'Boolean' and 'Boolean'
如果邮件错误,那么它在任何升级版本中都解决了吗?一世 m使用typescript 2.0.3版本。
此问题发生在以下方案中
1
Object.is("string", "string");
if ("string" === "string1") {
}
2
Object.is(1, 2);
if (1 === 2) {
}
等..
答案 0 :(得分:8)
Typescript基本上是在那里抛出错误,因为它是错误的代码。
true
永远不会等于false
。打字稿知道这一点,并告诉你修改你的代码。
由于这些是常数值,因此它们被认为属于true
和false
类型。错误消息可能有点令人困惑,但它是正确的,同时对Typescript引擎有一些了解。
此代码会出现类似的错误:
if (1 === 2) {}
错误:
运算符'==='无法应用于类型'1'和'2'。
比较像throws that error这样的常量:
false === true; // Operator '===' cannot be applied to types 'false' and 'true'.
1 === 2; // Operator '===' cannot be applied to types '1' and '2'.
"a" === "b"; // Operator '===' cannot be applied to types '"a"' and '"b"'.
Object.is
与===
完全不同。 Object.is
执行 no 类型强制, 仅 比较两个参数的值。由于TypeScript不会使用函数的功能验证这些参数,因此它不会在那里引发错误。
答案 1 :(得分:0)
检查您是否正确声明了布尔变量,我认为您已将其声明为false / true而不是Boolean。 我希望这可以帮助某人。