π Disallow nested ternary expressions.
πΌπ« This rule is enabled in the β
recommended config. This rule is disabled in the βοΈ unopinionated config.
π§ This rule is automatically fixable by the --fix CLI option.
Improved version of the no-nested-ternary ESLint rule. This rule allows cases where the nested ternary is only one level and wrapped in parens.
Unparenthesized or deeply nested ternaries make readers track multiple conditions and branches at once, so this rule permits only clearly parenthesized single-level nesting.
This rule replaces ESLint's built-in no-nested-ternary rule, which Unicorn presets disable when this rule is enabled.
// β
const foo = i > 5 ? i < 100 ? true : false : true;
// β
const foo = i > 5 ? (i < 100 ? true : false) : true;// β
const foo = i > 5 ? true : (i < 100 ? true : (i < 1000 ? true : false));// β
const foo = i > 5 || i < 100 || i < 1000;This rule is only fixable when the nesting is up to one level. The rule will wrap the nested ternary in parens:
const foo = i > 5 ? i < 100 ? true : false : truewill get fixed to
const foo = i > 5 ? (i < 100 ? true : false) : trueWe recommend disabling the ESLint no-nested-ternary rule in favor of this one:
{
rules: {
'no-nested-ternary': 'off',
},
}The Unicorn presets do this for you when this rule is enabled.