constructor-super
Require super()
calls in constructors
✅ Recommended
The "extends": "eslint:recommended"
property in a configuration file enables this rule
派生类的构造者必须调用 super()
。
非派生类的构造器不得调用 super()
。
如果不遵守这一点,JavaScript 引擎将引起运行时错误。
这条规则检查是否有是有效的 super()
调用。
规则细节
这条规则旨在标记无效的/缺失的 super()
调用。
使用此规则的错误示例:
Open in Playground
/*eslint constructor-super: "error"*/
/*eslint-env es6*/
class A {
constructor() {
super(); // This is a SyntaxError.
}
}
class A extends B {
constructor() { } // Would throw a ReferenceError.
}
// Classes which inherits from a non constructor are always problems.
class A extends null {
constructor() {
super(); // Would throw a TypeError.
}
}
class A extends null {
constructor() { } // Would throw a ReferenceError.
}
使用此规则的正确示例:
Open in Playground
/*eslint constructor-super: "error"*/
/*eslint-env es6*/
class A {
constructor() { }
}
class A extends B {
constructor() {
super();
}
}
何时不用
如果你不想被告知构造函数中无效/缺失的 super()
调用,你可以安全地禁用这一规则。
使用 TypeScript 时,也可以安全地禁用此规则,因为 TypeScript 编译器会执行此检查(ts(2335) & ts(2377)
)。
Version
This rule was introduced in ESLint v0.24.0.