Skip to content
← Back to rules

typescript/no-mixed-enums 細部にこだわる

💭 This rule requires type information.

何を実行するか

このルールは、文字列メンバーと数値メンバーを同時に持つ列挙型(enum)の使用を禁止します。

なぜ問題なのか

TypeScript の列挙型は、文字列、数値、または計算されたメンバーを持つことができます。同じ列挙型内に文字列と数値のメンバーを混在させると、TypeScript が列挙型をコンパイルする方法により、混乱や予期しないランタイム動作が生じる可能性があります。

このルールに対して不正なコードの例

ts
enum Status {
  Open = 1,
  Closed = "closed",
}

enum Direction {
  Up = "up",
  Down = 2,
  Left = "left",
  Right = 4,
}

このルールに対して正しいコードの例

ts
// すべて数値
enum Status {
  Open = 1,
  Closed = 2,
}

// すべて文字列
enum Direction {
  Up = "up",
  Down = "down",
  Left = "left",
  Right = "right",
}

// 自動インクリメントされた数値
enum Color {
  Red,
  Green,
  Blue,
}

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:

json
{
  "rules": {
    "typescript/no-mixed-enums": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-mixed-enums

参照