1. ホーム
  2. typescript

[解決済み] Typescriptにはunionがあるので、enumは冗長なのか?

2022-05-13 11:06:37

質問

TypeScriptにunion型が導入されて以来、enum型を宣言する理由はあるのだろうかと思うようになりました。以下のenum型宣言を考えてみます。

enum X { A, B, C }
var x: X = X.A;

と同様の組合型宣言を行います。

type X: "A" | "B" | "C"
var x: X = "A";

もしこれらが基本的に同じ目的を果たし、ユニオンの方が強力で表現力が豊かであるなら、なぜenumが必要なのでしょうか?

どのように解決するのですか?

私が見る限り、これらは冗長ではありません。それは、enum が実際にトランスパイルされ、結果の javascript に反映されるのに対し、union 型は純粋にコンパイル時の概念であるという非常に単純な理由による ( サンプル ).

これにより、enumではユニオン型では不可能なことができるようになります(例えば 列挙可能な列挙値 )