diff --git a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts index c688d75d2771..144aa08641b5 100644 --- a/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts +++ b/packages/eslint-plugin/src/rules/prefer-nullish-coalescing.ts @@ -10,8 +10,8 @@ import { getTypeFlags, isLogicalOrOperator, isNodeEqual, - isNullableType, isNullLiteral, + isTypeFlagSet, isUndefinedIdentifier, nullThrows, NullThrowsReasons, @@ -309,7 +309,7 @@ export default createRule({ ): void { const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); const type = checker.getTypeAtLocation(tsNode.left); - if (!isNullableType(type)) { + if (!isTypeFlagSet(type, ts.TypeFlags.Null | ts.TypeFlags.Undefined)) { return; } 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 334754454f1c..c37a9431dae7 100644 --- a/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts +++ b/packages/eslint-plugin/tests/rules/prefer-nullish-coalescing.test.ts @@ -222,6 +222,21 @@ x || y; `, options: [{ ignorePrimitives: true }], })), + ` + declare const x: any; + declare const y: number; + x || y; + `, + ` + declare const x: unknown; + declare const y: number; + x || y; + `, + ` + declare const x: never; + declare const y: number; + x || y; + `, ], invalid: [ ...nullishTypeInvalidTest((nullish, type) => ({