#typescript
#typescript
Вопрос:
Я объявил перечисление в typescript следующим образом:
enum MultiPhaseUnits {
AMPERAGE = 'AMPERAGE',
VOLTAGE = 'VOLTAGE',
POWER_FACTOR = 'POWER_FACTOR',
LINE_VOLTAGE = 'LINE_VOLTAGE'
}
и создал массив значений enum как таковой:
this.multiPhaseUnits = [MultiPhaseUnits.AMPERAGE, MultiPhaseUnits.LINE_VOLTAGE, MultiPhaseUnits.POWER_FACTOR, MultiPhaseUnits.VOLTAGE];
Моя проблема в том, что когда я захожу проверить, включена ли строка в этот массив, VSCode сообщает parameter of type string is not assignable to parameter of type MultiPhaseUnit
. Например:
if (this.multiPhaseUnits.indexOf(queryable.unit.apiUnit) > -1) {...}
Он помещает красную закорючку под queryable.unit.apiUnit
, где apiUnit
— строка в форме AMPERAGE, LINE_VOLTAGE...
. Я проверил, что этот код будет работать, и убедился, что массив multiPhaseUnits[]
в конечном итоге будет по сути массивом строк. Почему VSCode жалуется на эту проверку? Даже если мой код работает, если я делаю что-то неправильно, как я могу это исправить?
Ответ №1:
Вам нужно преобразовать строку в тип MultiPhaseUnits.
if (this.multiPhaseUnits.indexOf(MultiPhaseUnits[queryable.unit.apiUnit]) > -1)
Комментарии:
1. Это было оно! Спасибо!