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 で書かなければいけないライブラリがあったりする・・・。