JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 16482
  • Score
    100M100P100Q167736F
  • License MIT

🐊Putout plugin adds ability to simplify ternary operator

Package Exports

  • @putout/plugin-simplify-ternary
  • @putout/plugin-simplify-ternary/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@putout/plugin-simplify-ternary) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@putout/plugin-simplify-ternary NPM version

The ternary operator takes three operands: a condition followed by a question mark (?), then an expression to execute if the condition is truthy followed by a colon (:), and finally the expression to execute if the condition is falsy. This operator is frequently used as an alternative to an if...else statement.

(c) MDN

🐊Putout plugin adds ability to simplify ternary to logical expression when first and second operands are the same.

Install

npm i @putout/plugin-simplify-ternary -D

Rule

{
    "rules": {
        "simplify-ternary/value": "on",
        "simplify-ternary/spread": "on"
    }
}

value

Check out in 🐊Putout Editor.

❌ Example of incorrect code

module.exports = fs.copyFileSync ? fs.copyFileSync : copyFileSync;

x = y ? y : z;
x = y ? z : y;
x = y ? z : false;

m = is ? a && b : a && c;

βœ… Example of correct code

module.exports = fs.copyFileSync || copyFileSync;

x = y || z;
x = y && z;

m = a && is ? b : c;

spread

No need to use ternary when you can use logical expression (&&) it behaves in the same way, but simpler.

Check out in 🐊Putout Editor.

❌ Example of incorrect code

const a = {
    ...DEV ? {
        devtool: 'eval',
    } : {},
};

βœ… Example of correct code

const a = {
    ...DEV && {
        devtool: 'eval',
    },
};

Comparison

Linter Rule Fix
🐊 Putout simplify-ternary βœ…
⏣ ESLint no-unneeded-ternary ⚠️ (partially: no MemberExpression, SpreadElement support)

License

MIT