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. 생성자는 예외 대상입니다.
  }
}

class C {
  static foo() {
    // OK. static 메서드는 반드시 this를 사용할 필요가 없습니다.
  }
}

구성

이 규칙은 다음 속성을 가진 구성 객체를 받습니다.

enforceForClassFields

type: boolean

기본값: true

함수인 클래스 필드에 대해 이 규칙을 적용합니다.

exceptMethods

type: array

기본값: []

이 규칙에서 제외할 메서드 이름 목록입니다.

exceptMethods[n]

type: object

exceptMethods[n].name

type: string

exceptMethods[n].private

type: boolean

ignoreClassesWithImplements

type: "all" | "public-fields"

기본값: null

인터페이스를 구현한 클래스를 무시할지 여부.

ignoreOverrideMethods

type: boolean

기본값: false

재정의된 메서드를 무시할지 여부.

사용 방법

구성 파일 또는 CLI를 통해 이 규칙을 활성화하려면 다음을 사용하세요:

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

참조