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

使用此规则的错误示例:

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.

Resources

更改语言