> For AI agents: the complete documentation index is available at https://rslint.rs/llms.txt, the full documentation bundle is available at https://rslint.rs/llms-full.txt.

# no-useless-constructor

[Added in v0.4.2](https://github.com/web-infra-dev/rslint/releases/tag/v0.4.2)
## Configuration

| Preset                         | Configured Value |
| ------------------------------ | ---------------- |
| ✅ ts.configs.strict            | `"error"`        |
| ✅ ts.configs.strictTypeChecked | `"error"`        |


```ts title=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:

```typescript
class A {
  constructor() {}
}

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

class C {
  public constructor() {}
}
```

Examples of **correct** code for this rule:

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

class B {
  private constructor() {}
}

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

## Original Documentation

- [typescript-eslint: no-useless-constructor](https://typescript-eslint.io/rules/no-useless-constructor)
- [Source code](https://github.com/typescript-eslint/typescript-eslint/blob/v8.67.0/packages/eslint-plugin/src/rules/no-useless-constructor.ts)
