Противоположные значения перечисления TypeScript - PullRequest
0 голосов
/ 07 апреля 2019

Можно ли создать перечисление с двумя значениями, которое при использовании одного с оператором ! возвращает другое?Я не знаю, имеет ли это смысл, вот что я хочу, но с кодом:

enum MyEnum {
    FirstValue,
    SecondValue
}

!MyEnum.FirstValue => MyEnum.SecondValue

Есть ли способ сделать это?

1 Ответ

2 голосов
/ 07 апреля 2019
 enum MyEnum {
   FirstValue = 1,
   SecondValue = ~FirstValue
 }

Вы можете использовать XOR для числового перечисления. Чтобы инвертировать, просто используйте ~.

 ~MyEnum.FirstValue === MyEnum.SecondValue
 ~~MyEnum.FirstValue === MyEnum.FirstValue

В качестве альтернативы вы можете использовать объект поиска:

 enum MyEnum { FirstValue = 1; SecondValue = 2 }

 const invert = {
   [MyEnum.FirstValue]: MyEnum.SecondValue,
   [MyEnum.SecondValue]: MyEnum.FirstValue
 };

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