• Error
  • Reported by the type checker

TS4115

This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'.

Under noImplicitOverride, a constructor parameter property replaces a base class member without override. Add override to it.

What it means

A parameter property (constructor(public x: T)) declares a class member. With noImplicitOverride on, if a base class already has that member, the parameter property needs override too.

Example

tsconfig.json
{
  "compilerOptions": {
    "strict": true,
    "target": "es2022",
    "module": "esnext",
    "moduleResolution": "bundler",
    "noEmit": true,
    "noImplicitOverride": true
  }
}
index.ts
class Base {
  name = "";
}
class Child extends Base {
  constructor(public name: string) { super(); }
}
export {};
ts-r-check -p tsconfig.json --pretty false ts-r output
index.ts(5,15): error TS4115: This parameter property must have an 'override' modifier because it overrides a member in base class 'Base'.

Recorded by node scripts/verify-examples.mjs with ts-r built from commit 6deaf01.

How to fix

  • Add override to the parameter: constructor(public override name: string).