diff --git a/packages/eslint-plugin/src/rules/explicit-function-return-type.ts b/packages/eslint-plugin/src/rules/explicit-function-return-type.ts index 914e4172c79..be6bb14c448 100644 --- a/packages/eslint-plugin/src/rules/explicit-function-return-type.ts +++ b/packages/eslint-plugin/src/rules/explicit-function-return-type.ts @@ -65,7 +65,8 @@ export default util.createRule({ function isSetter(node: TSESTree.Node | undefined): boolean { return ( !!node && - node.type === AST_NODE_TYPES.MethodDefinition && + (node.type === AST_NODE_TYPES.MethodDefinition || + node.type === AST_NODE_TYPES.Property) && node.kind === 'set' ); } diff --git a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts index efb98d1dd34..936b300134b 100644 --- a/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts +++ b/packages/eslint-plugin/tests/rules/explicit-function-return-type.test.ts @@ -169,6 +169,17 @@ class App { `, options: [{ allowTypedFunctionExpressions: true }], }, + // https://github.com/typescript-eslint/typescript-eslint/issues/525 + { + filename: 'test.ts', + code: ` +const myObj = { + set myProp(val) { + this.myProp = val; + }, +}; + `, + }, ], invalid: [ { diff --git a/packages/typescript-estree/src/ts-estree/ts-estree.ts b/packages/typescript-estree/src/ts-estree/ts-estree.ts index 6bb54c5a775..504280e4850 100644 --- a/packages/typescript-estree/src/ts-estree/ts-estree.ts +++ b/packages/typescript-estree/src/ts-estree/ts-estree.ts @@ -895,7 +895,7 @@ export interface Property extends BaseNode { computed: boolean; method: boolean; shorthand: boolean; - kind: 'init'; + kind: 'init' | 'get' | 'set'; } export interface RestElement extends BaseNode {