In TypeScript möchte ich zwei Variablen vergleichen, die enum-Werte enthalten. Hier ist mein minimales Codebeispiel:Vergleichen von Enums in TypeScript
enum E {
A,
B
}
let e1: E = E.A
let e2: E = E.B
if (e1 === e2) {
console.log("equal")
}
Wenn mit tsc
(v 2.0.3) Kompilieren bekomme ich folgende Fehlermeldung:
TS2365: Operator '===' cannot be applied to types 'E.A' and 'E.B'.
Samt mit ==
, !==
und !=
. Ich habe versucht, das const
Keyword hinzuzufügen, aber das scheint keine Wirkung zu haben. Die TypeScript spec sagt der folgende:
4.19.3 The <, >, <=, >=, ==, !=, ===, and !== operators
These operators require one or both of the operand types to be assignable to the other. The result is always of the Boolean primitive type.
Which (glaube ich), erklärt den Fehler. Aber wie kann ich das umgehen?
Exkurs
ich mit atom-typescript den Atom-Editor bin mit, und ich erhalte keine Fehler/Warnungen in meinem Lektor. Aber wenn ich tsc
im selben Verzeichnis laufe, erhalte ich den Fehler oben. Ich dachte, sie sollten die gleiche tsconfig.json
Datei verwenden, aber das ist offenbar nicht der Fall.
Wesen, das nicht für mich arbeiten. Ich bekomme ein undefinierbares – dave0688