В Typescript есть 2 вида перечислений:
Во время переноса TS в JS они преобразуются в реальные объекты, поэтому они существуют во время выполнения.
enum Response {
No = 0,
Yes = 1,
}
const yes = Response.Yes; // Works at runtime
const nameOfYes = Response[yes]; // Also works at runtime because a reverse mapping is also generated during transpilation
const enum
(тот, который вы используете):
Константные перечисления удаляются во время переноса в JS, поэтому вы не можете использовать их во время выполнения. Согласно TS doc константные перечисления существуют до , избегая оплаты стоимости дополнительного сгенерированного кода и дополнительной косвенности при доступе к значениям перечисления .
const enum Response {
No = 0,
Yes = 1,
}
const yes = Response.Yes; // At runtime: ReferenceError: Response is not defined
const nameOfYes = Response[yes]; // During transpilation: TS2476: A const enum member can only be accessed using a string literal.
Так что просто измените ваш const enum
на enum
, и ваша ошибка во время выполнения исчезнет.