eslint/constructor-super 정확성
동작 방식
파생 클래스의 생성자에서 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