TypeScript では enum を避けよう

2026/02/10

TypeScript enum

enum というのはこういうのですね。

enum Status {
  Active = "ACTIVE",
  Inactive = "INACTIVE",
}

一見問題なさそうな気はするけど、TypeScript の設計思想に反しているんですね。

https://github.com/microsoft/TypeScript/wiki/TypeScript-Design-Goals

例えば「Provide additional runtime functionality.」というところ。 enum は JavaScript にコンパイルするときにコードを生成します

特に enum は使わなければいけない機能というわけではないので避けれるなら避けましょう。

例えば、

enum Status {
  Active,
  Inactive,
}

なら

type Status = "ACTIVE" | "INACTIVE"

これでいいし、

enum Status {
  Active = "ACTIVE",
  Inactive = "INACTIVE",
}

なら

const Status = {
  Active: "ACTIVE",
  Inactive: "INACTIVE",
} as const

これでいいですね。

だけどたまに enum で書かなければいけないライブラリがあったりする・・・。


Profile picture

あさくち ITエンジニアです。Web開発と競技プログラミング。 X(@paleApricot)