Typescript: Argumentos de expressão de índice em enums 'const' devem ser do tipo 'string' / literal de string /

Criado em 22 jan. 2015  ·  3Comentários  ·  Fonte: microsoft/TypeScript

"Argumentos de expressão de índice em enums 'const' devem ser do tipo 'string'"

Esta mensagem de erro é bastante ambígua:
type_string

Parece que deveria ser
"O argumento da expressão de índice de 'const' enum deve ser uma string literal"

Porque o compilador faz isso:

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

Comentários muito úteis

Se alguém tiver o mesmo problema, tente remover 'const' e tudo funcionará.
Bem, não é totalmente verdade, você tem que fazer algo como:

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]

Todos 3 comentários

Um RP seria apreciado

A mensagem agora é "Um membro const enum só pode ser acessado usando uma string literal.", Parece bom para mim.

Se alguém tiver o mesmo problema, tente remover 'const' e tudo funcionará.
Bem, não é totalmente verdade, você tem que fazer algo como:

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]
Esta página foi útil?
0 / 5 - 0 avaliações