$ cnpm install @putout/plugin-spread
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.
npm i @putout/plugin-spread
{
"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"
}
}
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.
function merge(a) {
return Object.assign({}, a, {
hello: 'world',
});
}
function merge(a) {
return {
...a,
hello: 'world',
};
}
| Linter | Rule | Fix |
|---|---|---|
| ???? Putout | spread/convert-object-assign-to-merge-spread |
β |
| β£ ESLint | prefer-object-spread |
β |
The thing is [...b] can be used for:
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.
for (const a of [...b]) {}
const places = [...getPlaces()];
for (const a of b) {}
const places = getPlaces();
// Array constructor creates sparse array
[...Array(5)].map(Number);
const a = {
...fn(),
};
const a = fn();
Checkout in ????Putout Editor.
[
...[
...a,
...b,
],
...x,
];
[
...a,
...b,
...x,
];
Spread syntax (
...) allows an array expression to be expanded in places where zero or more arguments are expected.(c) MDN
console.apply(null, arguments);
console.log(...arguments);
MIT
Copyright 2013 - present © cnpmjs.org | Home |