Przejdź do głównej zawartości

useNullishCoalescing

Ta treść nie jest jeszcze dostępna w Twoim języku.

biome.json
{
"linter": {
"rules": {
"nursery": {
"useNullishCoalescing": "error"
}
}
}
}

Enforce using nullish coalescing operator (??) instead of logical or (||).

The ?? operator only checks for null and undefined, while || checks for any falsy value including 0, '', and false. This can prevent bugs where legitimate falsy values are incorrectly treated as missing.

This rule triggers when the left operand of || is possibly nullish (contains null or undefined in its type). A safe fix is only offered when the type analysis confirms the left operand can only be truthy or nullish (not other falsy values like 0 or '').

By default, || expressions in conditional test positions (if/while/for/ternary) are ignored, as the falsy-checking behavior is often intentional there. This can be disabled with the ignoreConditionalTests option.

declare const maybeString: string | null;
const value = maybeString || 'default'; // should use ??
declare const maybeNumber: number | undefined;
const value = maybeNumber || 0; // should use ??
// Already using ??
declare const maybeString: string | null;
const value = maybeString ?? 'default';
// Type is not nullish - no null or undefined in union
declare const definiteString: string;
const value = definiteString || 'fallback';
// In conditional test position (ignored by default)
declare const cond: string | null;
if (cond || 'fallback') {
console.log('in if');
}