diff --git a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts index 49fdfc1d5a0..fc2dd4e63c4 100644 --- a/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts +++ b/packages/eslint-plugin/src/rules/explicit-module-boundary-types.ts @@ -427,7 +427,10 @@ export default util.createRule({ const isConstructor = node.parent?.type === AST_NODE_TYPES.MethodDefinition && node.parent.kind === 'constructor'; - if (!isConstructor && !node.returnType) { + const isAbstractSetAccessor = + node.parent?.type === AST_NODE_TYPES.TSAbstractMethodDefinition && + node.parent.kind === 'set'; + if (!isConstructor && !isAbstractSetAccessor && !node.returnType) { context.report({ node, messageId: 'missingReturnType', diff --git a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts index 114b26aed0f..32ae93592b4 100644 --- a/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-module-boundary-types.test.ts @@ -646,6 +646,11 @@ type Buz = () => (n: number) => string; export const buz: Buz = () => n => String(n); `, + ` +export abstract class Foo { + abstract set value(element: T); +} + `, ], invalid: [ {