@putout/plugin-spread
🐊Putout plugin adds ability to remove useless spread
Last updated 4 months ago by coderaiser .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @putout/plugin-spread 
SYNC missed versions from official npm registry.

@putout/plugin-spread NPM version

Spread syntax can be used when all elements from an object or array need to be included in a list of some kind.

(c) MDN

????Putout plugin adds ability to transform spread syntax.

Install

npm i @putout/plugin-spread

Rules

Rule

{
    "rules": {
        "spread/convert-apply-to-spread": "on",
        "spread/convert-object-assign-to-merge-spread": "on",
        "spread/remove-useless-array": "on",
        "spread/remove-useless-object": "on",
        "spread/simplify-nested": "on"
    }
}

convert-object-assign-to-merge-spread

The Object.assign() method copies all enumerable own properties from one or more source objects to a target object and returns the modified target object.

Spread syntax (...) allows an object expression to be expanded in places where zero or more key-value pairs are expected.

(c) MDN

Convert Object.assign() to merge spread since it shorter but does (mostly) the same.

❌ Example of incorrect code

function merge(a) {
    return Object.assign({}, a, {
        hello: 'world',
    });
}

βœ… Example of correct code

function merge(a) {
    return {
        ...a,
        hello: 'world',
    };
}

Comparison

Linter Rule Fix
???? Putout spread/convert-object-assign-to-merge-spread βœ…
⏣ ESLint prefer-object-spread βœ…

remove-useless-array

The thing is [...b] can be used for:

  • copying an array;
  • converting different value type like string to an array.

So better to be more concrete and use slice for copying and Array()/Array.from() for converting to decrease cognitive load. Also sometimes there is no need on any of this operations, and we can drop spread.

❌ Example of incorrect code

for (const a of [...b]) {}

const places = [...getPlaces()];

βœ… Example of correct code

for (const a of b) {}

const places = getPlaces();

// Array constructor creates sparse array
[...Array(5)].map(Number);

remove-useless-object

❌ Example of incorrect code

const a = {
    ...fn(),
};

βœ… Example of correct code

const a = fn();

nested

Checkout in ????Putout Editor.

❌ Example of incorrect code

[
    ...[
        ...a,
        ...b,
    ],
    ...x,
];

βœ… Example of correct code

[
    ...a,
    ...b,
    ...x,
];

convert-apply-to-spread

Spread syntax (...) allows an array expression to be expanded in places where zero or more arguments are expected.

(c) MDN

❌ Example of incorrect code

console.apply(null, arguments);

βœ… Example of correct code

console.log(...arguments);

License

MIT

Current Tags

  • 3.0.0                                ...           latest (2 months ago)

5 Versions

  • 3.0.0                                ...           2 months ago
  • 2.0.0                                ...           3 months ago
  • 1.2.0                                ...           4 months ago
  • 1.1.0                                ...           4 months ago
  • 1.0.0                                ...           4 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 1
Last Day 0
Last Week 1
Last Month 0
Dependencies (1)
Dev Dependencies (6)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |