noUselessConstructor (since vnext)
This rule is recommended by Rome.
Disallow unnecessary constructors.
ES2015 provides a default class constructor if one is not specified. As such, providing an empty constructor or one that delegates into its parent is unnecessary.
Source: https://typescript-eslint.io/rules/no-useless-constructor
Examples
Invalid
class A {
constructor (a) {}
}
complexity/noUselessConstructor.js:2:5 lint/complexity/noUselessConstructor FIXABLE ━━━━━━━━━━━━━━
✖ This constructor is unnecessary.
1 │ class A {
> 2 │ constructor (a) {}
│ ^^^^^^^^^^^^^^^^^^
3 │ }
4 │
ℹ Safe fix: Remove the unnecessary constructor.
1 1 │ class A {
2 │ - ····constructor·(a)·{}
3 2 │ }
4 3 │
class B extends A {
constructor (a) {
super(a);
}
}
complexity/noUselessConstructor.js:2:5 lint/complexity/noUselessConstructor FIXABLE ━━━━━━━━━━━━━━
✖ This constructor is unnecessary.
1 │ class B extends A {
> 2 │ constructor (a) {
│ ^^^^^^^^^^^^^^^^^
> 3 │ super(a);
> 4 │ }
│ ^
5 │ }
6 │
ℹ Safe fix: Remove the unnecessary constructor.
1 1 │ class B extends A {
2 │ - ····constructor·(a)·{
3 │ - ········super(a);
4 │ - ····}
5 2 │ }
6 3 │
class C {
/**
* Documented constructor.
*/
constructor () {}
}
complexity/noUselessConstructor.js:5:5 lint/complexity/noUselessConstructor FIXABLE ━━━━━━━━━━━━━━
✖ This constructor is unnecessary.
3 │ * Documented constructor.
4 │ */
> 5 │ constructor () {}
│ ^^^^^^^^^^^^^^^^^
6 │ }
7 │
ℹ Suggested fix: Remove the unnecessary constructor.
1 1 │ class C {
2 │ - ····/**
3 │ - ·····*·Documented·constructor.
4 │ - ·····*/
5 │ - ····constructor·()·{}
6 2 │ }
7 3 │
Valid
class A {
constructor (prop) {
this.prop = prop;
}
}
class B extends A {
constructor () {
super(5);
}
}
class C {
// Empty constructor with parameter properties are allowed.
constructor (private prop: number) {}
}