Typescript const字符串比较错误

时间:2018-06-25 12:01:51

标签: string typescript const tslint

这实际上是在阻止我的Angular应用运行。这是一个派生示例,我正在设置的const只是为了测试函数中的某些值,因此有很多解决方法,但是似乎很奇怪我想知道发生了什么。

以下代码也给出了Type '"Red"' is not comparable to type '"Green"'.语句也会出现tslint错误。

if

为什么将字符串用作类型?为什么不能将const字符串变量与字符串进行比较?这似乎是一个错误。

1 个答案:

答案 0 :(得分:3)

Typescript具有literal types(一种表示单个值的类型)。常量类型将被推断为表示要为其分配值的文字类型。因此,当您声明const color = 'Red'时,color的类型实际上是字符串文字类型'Red'而不是string类型。

Typescript这样做是为了检查尽可能多的代码。在这种情况下,如果您考虑一下,则此代码无法达到Green的情况,因此该代码可能存在一些无效的地方(我们通常不希望编写无效的代码)。

如果您希望常量的类型仅为string,则可以手动输入常量:

const color: string = 'Red';