Как создать и проанализировать строковые перечисления со значениями в Typescript - PullRequest
0 голосов
/ 20 мая 2018

Я знаю, что существует проблема с созданием строковых перечислений с использованием Typescript, даже в v2.4 + я использую машинопись 2.8 и Angular 6.

Я хотел бы иметь enum и свободно получать строкузначение из перечисления и для разбора строки в перечисление.

Итак, предположим, у меня есть это перечисление:

export enum MyEnum{
  INIT = 'init-room',
  CLOSE = 'close-room'
}

Это перечисление полезно для связи с остальным API.Так что из API и API я должен отправлять строки.Но внутри приложения я хочу как можно скорее преобразовать строку из API в enum.

Поэтому я хочу иметь функцию для анализа и строкового преобразования моего enum.

Я пробую этот подход, но это не такработа.

export function toString(type: MyEnum): string {
    return MyEnum[type];
}

export function parse(type: string): Mode {
    return MyEnum[type];
}

Ну, это не большая неожиданность, потому что я хочу получить value из этого перечисления, а не MyEnum[type] - но я не знаю, как это сделать.

Я знаю, что существует проблема с преобразованием ключа в значение, в то время как значение для ключа работает.Поэтому я прошу любое решение с чистым кодом для достижения моей цели.

Ответы [ 3 ]

0 голосов
/ 20 мая 2018

Попробуйте следующее:

enumValues(enumType:any):number[] {
    return Object.keys(enumType).map(k => enumType[k]).filter(v => typeof v === "number")
}

enumString(enumType:any, enumValue:any):string {
    return enumType[enumValue];
}
0 голосов
/ 20 мая 2018

Вместо этого вы можете смело переключаться на постоянную.

0 голосов
/ 20 мая 2018

Может быть, попытаться получить значение следующим образом:

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