How to compare Enums in TypeScript

后端 未结 9 2268
攒了一身酷
攒了一身酷 2021-02-06 20:14

In TypeScript, I want to compare two variables containing enum values. Here\'s my minimal code example:

enum E {
  A,
  B
}

let e1: E = E.A
let e2: E = E.B

if (         


        
9条回答
  •  说谎
    说谎 (楼主)
    2021-02-06 20:56

    There is another way: if you don't want generated javascript code to be affected in any way, you can use type cast:

    let e1: E = E.A
    let e2: E = E.B
    
    
    if (e1 as E === e2 as E) {
      console.log("equal")
    }
    

    In general, this is caused by control-flow based type inference. With current typescript implementation, it's turned off whenever function call is involved, so you can also do this:

    let id = a => a
    
    let e1: E = id(E.A)
    let e2: E = id(E.B)
    
    if (e1 === e2) {
      console.log('equal');
    }
    

    The weird thing is, there is still no error if the id function is declared to return precisely the same type as its agument:

    function id(t: T): T { return t; }
    

提交回复
热议问题