首页 > 解决方案 > 相反的枚举值 TypeScript

问题描述

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

enum MyEnum {
    FirstValue,
    SecondValue
}

!MyEnum.FirstValue => MyEnum.SecondValue

有没有办法做到这一点?

标签: javascripttypescriptenums

解决方案


 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

推荐阅读