diff --git a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts index e0bb605f0f1..b326c754136 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-member-access.ts @@ -71,7 +71,8 @@ export default util.createRule({ } return { - MemberExpression: checkMemberExpression, + // ignore MemberExpression if it's parent is TSClassImplements or TSInterfaceHeritage + ':not(TSClassImplements, TSInterfaceHeritage) > MemberExpression': checkMemberExpression, 'MemberExpression[computed = true] > *.property'( node: TSESTree.Expression, ): void { diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts index bf6ff85c121..a9c21f8712b 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-member-access.test.ts @@ -66,6 +66,12 @@ function foo(x?: string[]) { x?.[(1 as any)++]; } `, + ` +class B implements FG.A {} + `, + ` +interface B extends FG.A {} + `, ], invalid: [ ...batchedSingleLineTests({