1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScript5でパワーアップしたEnum

Posted at

TypeScriptでは数値型のenumを以下のように定義されます。

enum Mammal {
  Human,
  Monkey,
  Lion,
  Bear,
};

TypeScript5以前で、enumの型を持つ値はnumber側のように振る舞っていました。

let mammal: Mammal = Mammal.Human
mammal = 1000;

実際にMammalが取る数値は0123ですが、任意の数値を代入することが可能になっていました。

TypeScript5ではこれが改善されてエラーが出るようになりました。

let mammal: Mammal = Mammal.Human
// エラー発生!
mammal = 1000;

これまではenumを用いた型を使っても大した制約を課せませんでしたが、今回の変更でenumに基づいた型、例をもとにするとMammal.Human | Mammal.Monkey | Mammal.Lion | Mammal.Bearのようなある程度の制約を持つ型として扱えるようになりました。

他にもデメリットはいくつか残っているのでこれによってenumを積極的に使いたいとはなりませんが、徐々に期待する動作に近づいているので数年後にはどのような変化が訪れているか楽しみです。

この記事はこのPRを参考に作成しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?