diff --git a/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts b/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts index 0d165ae7eb5c..2d03a7e65ba9 100644 --- a/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts +++ b/packages/eslint-plugin/src/rules/no-unsafe-enum-comparison.ts @@ -14,7 +14,6 @@ import { */ function typeViolates(leftTypeParts: ts.Type[], right: ts.Type): boolean { const leftValueKinds = new Set(leftTypeParts.map(getEnumValueType)); - return ( (leftValueKinds.has(ts.TypeFlags.Number) && tsutils.isTypeFlagSet( diff --git a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts index b2d4eb907b33..14dca49da472 100644 --- a/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unsafe-enum-comparison.test.ts @@ -1080,5 +1080,16 @@ ruleTester.run('strict-enums-comparison', rule, { }, ], }, + { + code: ` + enum Fruit { + Apple, + } + declare const foo: number & {}; + if (foo === Fruit.Apple) { + } + `, + errors: [{ messageId: 'mismatched' }], + }, ], });