Skip to content

noConstructorReturn

Diagnostic Category: lint/correctness/noConstructorReturn

Since: v1.0.0

Sources:

Disallow returning a value from a constructor.

Returning a value from a constructor of a class is a possible error. Forbidding this pattern prevents errors resulting from unfamiliarity with JavaScript or a copy-paste error.

Only returning without a value is allowed, as it’s a control flow statement.

class A {
constructor() {
return 0;
}
}
code-block.js:3:9 lint/correctness/noConstructorReturn ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

The constructor should not return a value.

1 │ class A {
2 │ constructor() {
> 3 │ return 0;
^^^^^^^^^
4 │ }
5 │ }

The constructor is here:

1 │ class A {
> 2 │ constructor() {
^^^^^^^^^^^^^^^
> 3 │ return 0;
> 4 │ }
^
5 │ }
6 │

Returning a value from a constructor may confuse users of the class.

class A {
constructor() {}
}
class B {
constructor(x) {
return;
}
}

Using this rule in combination with the singleton pattern

Section titled Using this rule in combination with the singleton pattern

Some people implement the singleton pattern in JavaScript by returning an existing instance from the constructor, which would conflict with this rule.

Instead, we advise to follow one of the suggestions described in this blog post: https://arendjr.nl/blog/2024/11/singletons-in-javascript/