TypeScriptでは、enum値を含む2つの変数を比較したいと思います。ここに私の最小限のコードの例です:TypeScriptでEnumを比較する方法
enum E {
A,
B
}
let e1: E = E.A
let e2: E = E.B
if (e1 === e2) {
console.log("equal")
}
tsc
(V 2.0.3)私は次のエラーを取得するとコンパイル:==
、!==
と!=
と
TS2365: Operator '===' cannot be applied to types 'E.A' and 'E.B'.
同じ。 const
キーワードを追加しようとしましたが効果がないようです。 TypeScript specには、次の言葉:
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.
どちらが(と思う)エラーを説明します。しかし、どうすれば丸めることができますか?
サイドノート
私はatom-typescriptとAtomのエディタを使用している、と私は私のエディタ内のエラー/警告を得ることはありません。しかし、同じディレクトリにtsc
を実行すると、上記のエラーが表示されます。私は彼らが同じtsconfig.json
ファイルを使うことになっていたと思ったが、明らかにそうではない。
if (e1.valueOf() === e2.valueOf()) {
console.log("equal")
}
しかし、私は、これはどこにでもドキュメントに記載されていないことを少し驚いている:
ことで、この
を持つ2つの列挙型を比較することができました。私は未定義になっています – dave0688