Ошибка сравнения константных строк Typescript - PullRequest
0 голосов
/ 25 июня 2018

Это фактически препятствует запуску моего приложения Angular. Это производный пример, настройка const I'm только для проверки некоторых значений в функции, так что есть способы обойти это, но это кажется настолько странным, что я хотел бы знать, что происходит.

Следующий код выдает ошибку tslint Type '"Red"' is not comparable to type '"Green"'. Также происходит с if операторами.

const color = 'Red'

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

Почему он использует строки как типы? Почему я не могу сравнить строковую переменную const со строкой? Это похоже на ошибку.

1 Ответ

0 голосов
/ 25 июня 2018

Typescript имеет литеральные типы , тип, представляющий одно значение. Типы констант будут выведены в литеральный тип, представляющий значение, которое им назначается. Поэтому, когда вы объявляете const color = 'Red', тип color фактически будет строковым литералом типа 'Red', а не string.

Typescript делает это для того, чтобы проверить как можно больше вашего кода. В этом случае, если вы подумаете об этом, из этого кода не может быть достигнуто дело Green, поэтому, вероятно, в этом коде есть что-то недопустимое (обычно мы не хотим писать мертвый код).

Если вы хотите, чтобы тип константы был просто string, вы можете ввести константу вручную:

const color: string = 'Red'; 
...