diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index 99bc76429d21..f9a953f501cf 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -310,6 +310,8 @@ export default util.createRule({ .filter((flag): flag is number => flag !== undefined) .reduce((previous, flag) => previous | flag, 0); if ( + type.flags !== ts.TypeFlags.Null && + type.flags !== ts.TypeFlags.Undefined && (type as ts.UnionOrIntersectionType).types.some(t => tsutils.isTypeFlagSet(t, ignorableFlags), ) diff --git a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts index 022eb5cdb8bc..9ba8d2dd34f2 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -1208,5 +1208,47 @@ x || y; }, ], }, + { + code: ` +declare const x: null; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +const x = undefined; +x || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +null || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, + { + code: ` +undefined || y; + `, + errors: [ + { + messageId: 'preferNullishOverOr', + }, + ], + }, ], });