eslint/constructor-super 正确性
它的作用
要求在派生类的构造函数中调用 super(),并禁止在非派生类的构造函数中调用 super()。
此规则可以在 TypeScript 代码中禁用,因为 TypeScript 编译器会强制执行此检查。
为什么这是个问题?
在 JavaScript 中,在派生类(即继承自其他类的类)的构造函数中调用 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();
}
}
}如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"rules": {
"constructor-super": "error"
}
}bash
oxlint --deny constructor-super