Typescript const 字符串比较错误
Error with Typescript const string comparison
这实际上是在阻止我的 Angular 应用 运行。这是一个派生的例子,我设置的 const
只是为了测试函数中的一些值,所以有办法解决这个问题,但看起来很奇怪我想知道发生了什么。
以下代码给出了 tslint 错误 Type '"Red"' is not comparable to type '"Green"'.
也发生在 if
语句中。
const color = 'Red'
switch(color) {
case 'Red':
//do something
case 'Green':
//something else
}
为什么使用字符串作为类型?为什么我不能将 const 字符串变量与字符串进行比较?这似乎是一个错误。
Typescript 有 literal types,一种表示单个值的类型。常量类型将被推断为表示分配给它们的值的文字类型。因此,当您声明 const color = 'Red'
时,color
的类型实际上是字符串文字类型 'Red'
而不是 string
类型。
Typescript 这样做是为了尽可能多地检查您的代码。在这种情况下,如果你仔细想想,Green
的情况不能从这段代码中得到,所以这段代码可能有一些无效的地方(我们通常不想写死代码)。
如果您希望常量的类型只是string
,您可以手动键入常量:
const color: string = 'Red';
这实际上是在阻止我的 Angular 应用 运行。这是一个派生的例子,我设置的 const
只是为了测试函数中的一些值,所以有办法解决这个问题,但看起来很奇怪我想知道发生了什么。
以下代码给出了 tslint 错误 Type '"Red"' is not comparable to type '"Green"'.
也发生在 if
语句中。
const color = 'Red'
switch(color) {
case 'Red':
//do something
case 'Green':
//something else
}
为什么使用字符串作为类型?为什么我不能将 const 字符串变量与字符串进行比较?这似乎是一个错误。
Typescript 有 literal types,一种表示单个值的类型。常量类型将被推断为表示分配给它们的值的文字类型。因此,当您声明 const color = 'Red'
时,color
的类型实际上是字符串文字类型 'Red'
而不是 string
类型。
Typescript 这样做是为了尽可能多地检查您的代码。在这种情况下,如果你仔细想想,Green
的情况不能从这段代码中得到,所以这段代码可能有一些无效的地方(我们通常不想写死代码)。
如果您希望常量的类型只是string
,您可以手动键入常量:
const color: string = 'Red';