eslint/constructor-super Correctness
作用
要求在派生类的构造函数中调用 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();
}
}
}如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"rules": {
"constructor-super": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"constructor-super": "error",
},
});bash
oxlint --deny constructor-superVersion
此规则在 v0.0.3 中添加。
