Машинопись: приведение строки к числовому перечислению? - PullRequest
0 голосов
/ 16 июня 2019

У меня есть перечисление, которое должно остаться как числовое перечисление - поэтому я не могу изменить его на строку.

Я бы хотел привести строку к правильному перечислению без длинного переключателя: -)

например, вот мое перечисление

export enum LogLevel {
  TRACE = 0,
  DEBUG = 1,
  INFO = 2,
  LOG = 3,
  WARN = 4,
  ERROR = 5,
  FATAL = 6,
  OFF = 7
}

Я получил строку, переданную мне, скажем, строка "WARN", что мне нужно иметь переменную, равную

LogLevel.WARN

Бросать между строками и строками enum легко, но не так просто, когда мне нужно сохранить перечисление как нумерованное перечисление.

Какие идеи лучший способ сделать это?

Заранее спасибо

** РЕДАКТИРОВАТЬ **

На самом деле это ошибка компилятора, показывающая следующее

Ошибка TypeScript TS7015 при доступе к перечислению с использованием параметра типа строки

Здесь есть исправление

https://github.com/Microsoft/TypeScript/issues/17800

    let s: string = "WARN"
    console.log(LogLevel[s as keyof typeof LogLevel]) // 4

1 Ответ

2 голосов
/ 16 июня 2019

Перечисления доступны в виде конструкции времени выполнения , вы можете проиндексировать перечисление с помощью строки:

let s: string = "WARN";
console.log(LogLevel[s]); // 4

На игровой площадке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...