这实际上是在阻止我的Angular应用运行。这是一个派生示例,我正在设置的const
只是为了测试函数中的某些值,因此有很多解决方法,但是似乎很奇怪我想知道发生了什么。>
以下代码也给出了Type '"Red"' is not comparable to type '"Green"'.
语句也会出现tslint错误。
if
为什么将字符串用作类型?为什么不能将const字符串变量与字符串进行比较?这似乎是一个错误。
答案 0 :(得分:3)
Typescript具有literal types(一种表示单个值的类型)。常量类型将被推断为表示要为其分配值的文字类型。因此,当您声明const color = 'Red'
时,color
的类型实际上是字符串文字类型'Red'
而不是string
类型。
Typescript这样做是为了检查尽可能多的代码。在这种情况下,如果您考虑一下,则此代码无法达到Green
的情况,因此该代码可能存在一些无效的地方(我们通常不希望编写无效的代码)。
如果您希望常量的类型仅为string
,则可以手动输入常量:
const color: string = 'Red';