Skip to content
← Back to rules

eslint/class-methods-use-this 制限

何を実行するか

クラスメソッドが this を使用することを強制します。

なぜ問題なのか

this を使わないクラスメソッドについては、そのメソッドを static メソッドに変更することを検討すべきです。常に可能または望ましいわけではありませんが、メソッドがインスタンスの状態に依存しないことを明確にするのに役立ちます。

もしメソッドを static 関数に変換した場合、そのメソッドを呼び出すクラスのインスタンスも、static 呼び出しに変更する必要があります。

このルールに対して誤りなコードの例:

js
class A {
  foo() {
    console.log("Hello World");
  }
}

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

js
class A {
  foo() {
    this.bar = "Hello World"; // OK、this が使用されている
  }
}

class B {
  constructor() {
    // OK。constructor は例外対象
  }
}

class C {
  static foo() {
    // OK。static メソッドは this を使用する必要がない
  }
}

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

enforceForClassFields

type: boolean

default: true

関数型のクラスフィールドに対してこのルールを適用するかどうか。

exceptMethods

type: array

default: []

このルールの対象から除外するメソッド名のリスト。

exceptMethods[n]

type: object

exceptMethods[n].name

type: string

exceptMethods[n].private

type: boolean

ignoreClassesWithImplements

type: "all" | "public-fields"

default: null

インターフェースを実装しているクラスを無視するかどうか。

ignoreOverrideMethods

type: boolean

default: false

メソッドの上書きを無視するかどうか。

使用方法

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

json
{
  "rules": {
    "class-methods-use-this": "error"
  }
}
bash
oxlint --deny class-methods-use-this

参照