代码之家  ›  专栏  ›  技术社区  ›  redOctober13

与Type Script const字符串比较错误

  •  0
  • redOctober13  · 技术社区  · 7 年前

    这实际上阻止了我的角度应用程序运行。这是一个衍生的例子, const 我的设置只是为了测试函数中的一些值,所以有很多方法可以解决这个问题,但是看起来很奇怪,我想知道发生了什么。

    下面的代码给出了错误 Type '"Red"' is not comparable to type '"Green"'. 发生在 if 声明也是。

    const color = 'Red'
    
    switch(color) {
      case 'Red':
        //do something
      case 'Green':
        //something else
    }
    

    为什么它使用字符串作为类型?为什么我不能比较常量字符串变量和字符串?这看起来像只虫子。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Titian Cernicova-Dragomir    7 年前

    typescript有 literal types ,表示单个值的类型。常数类型将被推断为表示赋值给它们的值的文字类型。所以当你宣布 const color = 'Red' 类型 color 实际上是字符串文字类型 'Red' 不是那个 string 键入。

    typescript这样做是为了检查尽可能多的代码。在这种情况下,如果你想一想, Green 此代码无法访问case,因此此代码可能有一些无效的内容(我们通常不希望编写死代码)。

    如果你想让常数的类型 一串 ,您可以手动键入常数:

    const color: string = 'Red'; 
    
    推荐文章