diff --git a/packages/eslint-plugin/src/rules/class-literal-property-style.ts b/packages/eslint-plugin/src/rules/class-literal-property-style.ts index dd1132f3b34d..893fe5dcf685 100644 --- a/packages/eslint-plugin/src/rules/class-literal-property-style.ts +++ b/packages/eslint-plugin/src/rules/class-literal-property-style.ts @@ -145,6 +145,7 @@ export default createRule({ MethodDefinition(node): void { if ( node.kind !== 'get' || + node.override || !node.value.body || node.value.body.body.length === 0 ) { @@ -222,7 +223,7 @@ export default createRule({ } }, PropertyDefinition(node): void { - if (!node.readonly || node.declare) { + if (!node.readonly || node.declare || node.override) { return; } const { properties } = diff --git a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts index df8a7ad66d45..66e896fc5aef 100644 --- a/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts +++ b/packages/eslint-plugin/tests/rules/class-literal-property-style.test.ts @@ -257,6 +257,35 @@ class Mx { `, options: ['getters'], }, + { + // https://github.com/typescript-eslint/typescript-eslint/issues/3602 + // getter with override modifier should be ignored + code: ` +declare abstract class BaseClass { + get cursor(): string; +} + +class ChildClass extends BaseClass { + override get cursor() { + return 'overridden value'; + } +} + `, + }, + { + // https://github.com/typescript-eslint/typescript-eslint/issues/3602 + // property with override modifier should be ignored + code: ` +declare abstract class BaseClass { + protected readonly foo: string; +} + +class ChildClass extends BaseClass { + protected override readonly foo = 'bar'; +} + `, + options: ['getters'], + }, ], invalid: [ {