Skip to content
← Back to rules

eslint/constructor-super 정확성

This rule is turned on by default.

동작 방식

파생 클래스의 생성자에서 super() 호출을 요구하고, 비파생 클래스의 생성자에서 super() 호출을 금지합니다.

이 규칙은 TypeScript 코드에서는 비활성화할 수 있습니다. 왜냐하면 TypeScript 컴파일러가 이 검사를 강제하기 때문입니다.

왜 좋지 않은가?

자바스크립트에서 파생 클래스(다른 클래스를 확장하는 클래스)의 생성자에서 super()를 호출하는 것은 필수적입니다. 이를 수행하지 않으면 런타임 시 참조 오류(ReferenceError)가 발생합니다. 반대로, 비파생 클래스에서 super()를 호출하는 것은 문법 오류입니다.

예시

이 규칙에 부적절한 코드 예시:

js
// super() 호출 누락
class A extends B {
    constructor() { }
}

// 비파생 클래스에서 super() 호출
class A {
    constructor() {
        super();
    }
}

// 일부 코드 경로에서만 super() 호출
class C extends D {
    constructor() {
        if (condition) {
            super();
        }
    }
}

이 규칙에 적절한 코드 예시:

js
// 파생 클래스에서 올바른 super() 호출
class A extends B {
  constructor() {
    super();
  }
}

// 비파생 클래스에서 super() 없음
class A {
  constructor() {}
}

// 모든 코드 경로에서 super() 호출
class C extends D {
  constructor() {
    if (condition) {
      super();
    } else {
      super();
    }
  }
}

사용 방법

이 규칙을 구성 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:

json
{
  "rules": {
    "constructor-super": "error"
  }
}
bash
oxlint --deny constructor-super

참고 자료