Typescript: Аргументы индексного выражения в перечислениях 'const' должны быть s / типа 'string' / строковым литералом /

Созданный на 22 янв. 2015  ·  3Комментарии  ·  Источник: microsoft/TypeScript

«Аргументы индексного выражения в перечислениях 'const' должны иметь тип 'строка'»

Это сообщение об ошибке довольно неоднозначно:
type_string

Кажется, так и должно быть
"Аргумент индексного выражения перечисления 'const' должен быть строковым литералом"

Потому что компилятор так поступает:

if (isConstEnumObjectType(objectType) && node.argumentExpression && node.argumentExpression.kind !== SyntaxKind.StringLiteral) {
  error(node.argumentExpression, Diagnostics.Index_expression_arguments_in_const_enums_must_be_of_type_string);
}
Bug help wanted

Самый полезный комментарий

Если у кого-то такая же проблема, просто попробуйте удалить «const», и все будет работать.
Ну это не совсем так, нужно сделать что-то вроде:

enum MyEnum{ 
    A, B, C
}

let index = 2;

// this is how you can get the value from the enum without haveing tslint error message.
(<any>MyEnum)[index]

Все 3 Комментарий

PR будет оценен

Сообщение теперь "К члену константного перечисления можно получить доступ только с помощью строкового литерала.", Мне нравится.

Если у кого-то такая же проблема, просто попробуйте удалить «const», и все будет работать.
Ну это не совсем так, нужно сделать что-то вроде:

enum MyEnum{ 
    A, B, C
}

let index = 2;

// this is how you can get the value from the enum without haveing tslint error message.
(<any>MyEnum)[index]
Была ли эта страница полезной?
0 / 5 - 0 рейтинги