相反的枚举值TypeScript

时间:2019-04-07 14:15:37

标签: javascript typescript enums

是否可以用两个值构成一个枚举,当一个值与!运算符一起使用时,它返回另一个值?我不知道这是否有意义,所以这是我想要的但带有代码:

enum MyEnum {
    FirstValue,
    SecondValue
}

!MyEnum.FirstValue => MyEnum.SecondValue

有什么办法吗?

1 个答案:

答案 0 :(得分:2)

 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