diff --git a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts index b0b4921dfaf..b58edd99ed6 100644 --- a/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts +++ b/packages/eslint-plugin/src/rules/no-extra-non-null-assertion.ts @@ -32,7 +32,7 @@ export default util.createRule({ return { 'TSNonNullExpression > TSNonNullExpression': checkExtraNonNullAssertion, - 'MemberExpression[optional = true] > TSNonNullExpression': checkExtraNonNullAssertion, + 'MemberExpression[optional = true] > TSNonNullExpression.object': checkExtraNonNullAssertion, 'CallExpression[optional = true] > TSNonNullExpression.callee': checkExtraNonNullAssertion, }; }, diff --git a/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts b/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts index 8afbbcf072f..39ad4da3ebf 100644 --- a/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts +++ b/packages/eslint-plugin/tests/rules/no-extra-non-null-assertion.test.ts @@ -33,6 +33,15 @@ function foo(bar?: { n: number }) { checksCounter?.textContent!.trim(); `, }, + // https://github.com/typescript-eslint/typescript-eslint/issues/2732 + { + code: ` +function foo(key: string | null) { + const obj = {}; + return obj?.[key!]; +} + `, + }, ], invalid: [ {