close

no-useless-constructor

Configuration

rslint.config.ts
import { defineConfig, ts } from '@rslint/core';

export default defineConfig([
  ts.configs.recommended,
  {
    rules: {
      '@typescript-eslint/no-useless-constructor': 'error',
    },
  },
]);

Rule Details

Disallow unnecessary constructors.

ES2015 provides a default class constructor if one is not specified. As such, it is unnecessary to provide an empty constructor or one that simply delegates into its parent class, as in the following examples:

This rule extends ESLint's no-useless-constructor with TypeScript-specific support for:

  • Access modifiers (private, protected, public)
  • Parameter properties
  • Parameter decorators

Examples of incorrect code for this rule:

class A {
  constructor() {}
}

class B extends A {
  constructor(foo) {
    super(foo);
  }
}

class C {
  public constructor() {}
}

Examples of correct code for this rule:

class A {
  constructor(private name: string) {}
}

class B {
  private constructor() {}
}

class C extends D {
  public constructor(foo) {
    super(foo);
  }
}

Original Documentation