Versions

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() 调用。

以下代码存在语法错误,因为它所在的类没有 extends 子句。

class A {
    constructor() {
        super();
    }
}

使用此规则的错误示例:

Open in Playground
/*eslint constructor-super: "error"*/
/*eslint-env es6*/

class A extends B {
    constructor() { }  // Would throw a ReferenceError.
}

// Classes which inherits from a non constructor are always problems.
class C extends null {
    constructor() {
        super();  // Would throw a TypeError.
    }
}

class D extends null {
    constructor() { }  // Would throw a ReferenceError.
}

使用此规则的正确示例:

Open in Playground
/*eslint constructor-super: "error"*/
/*eslint-env es6*/

class A {
    constructor() { }
}

class B extends C {
    constructor() {
        super();
    }
}

何时不用

如果你不想被告知构造函数中无效/缺失的 super() 调用,你可以安全地禁用这一规则。

使用 TypeScript 时,也可以安全地禁用此规则,因为 TypeScript 编译器会执行此检查(ts(2335) & ts(2377))。

Version

This rule was introduced in ESLint v0.24.0.

Resources

更改语言