【问题标题】:operator '===' cannot be applied to types 'false' and 'true'运算符 '===' 不能应用于类型 'false' 和 'true'
【发布时间】:2018-07-09 11:20:37
【问题描述】:

我知道下面的代码很愚蠢。但在实时编译时可能会使用相同类型的两个不同数据。

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) {
    }
    

等等。

【问题讨论】:

  • 好吧....不能应用...有什么问题?
  • 仅供参考 两个字符串对象永远不会相等 - 即使它们都包含相同的字符。
  • 为什么您会提示您收到的错误消息 clearly 错误代码是错误的,我无法理解。
  • @ScottMarcus: "a" === "a" is true.
  • @ScottMarcus:现在你在比较引用,而不是字符串。

标签: javascript angular typescript ecmascript-6


【解决方案1】:

Typescript 基本上是在那里抛出错误,因为它是糟糕的代码。

true 永远不会等于 false。 Typescript 知道这一点,并告诉您修复代码。

由于这些是常量值,它们被认为是truefalse 类型。错误消息可能有点令人困惑,但它是正确的,同时提供了对 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 不会使用函数的功能验证这些参数,因此它不会在那里引发错误。

【讨论】:

  • 是的,所有人都知道,但它仍然没有提及任何有关错误消息的内容
  • 好吧,true永远不会是false,所以这段代码用处不大。从语法上看,它看起来还可以,可以正常运行,所以很奇怪它被拒绝了,更奇怪的是 Typescript 没有给出描述性错误(比如“无法访问的代码”或“表达式总是计算为假”)。你让它听起来像这条消息,它的原因很明显,代码明显有问题,但我很感激某种形式的“证明”,因为它一点也不明显。
  • 好的。美好的。但是消息呢? true 和 false 是一个值而不是一个类型。 true&false 是一种布尔值。
  • TrueFalse 实际上是 Boolean 类型
  • @Cerbrus 那么,由于12是常量值,它们也被认为是12类型,你不能比较它们吗?
【解决方案2】:

检查您是否正确声明了布尔变量,我认为您已将其声明为 false/true 而不是布尔变量。 我希望这可以帮助某人。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多