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 (
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; }