W TypeScript, chcę porównać dwie zmienne zawierające wartości wyliczeniowe. Oto mój minimalny przykład kodu:Jak porównać wyliczenia w TypeScript
enum E {
A,
B
}
let e1: E = E.A
let e2: E = E.B
if (e1 === e2) {
console.log("equal")
}
Podczas kompilacji z tsc
(v 2.0.3) pojawia się następujący błąd:
TS2365: Operator '===' cannot be applied to types 'E.A' and 'E.B'.
samo z ==
, !==
i !=
. Próbowałem dodać słowo kluczowe const
, ale wydaje się, że nie ma ono żadnego efektu. TypeScript spec mówi co następuje:
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.
Które (chyba) wyjaśnia ten błąd. Ale jak mogę to obejść?
uwaga Side
Używam edytora Atom z atom-typescript, a ja nie dostać jakieś błędy/ostrzeżenia w moim edytorze. Ale kiedy uruchomię tsc
w tym samym katalogu, otrzymam powyższy błąd. Myślałem, że powinni używać tego samego pliku tsconfig.json
, ale najwyraźniej tak nie jest.
to nie działa dla mnie. Mam niezdefiniowane – dave0688