Since its introduction in ES6, the spead operator (...
) has found many uses.
I often find myself extending an object or array like this:
a = {
...a,
...b,
};
What about adding an assignment operator (like a += 3
) but for the spead operator:
a ...= b;
// or
a ...= {
foo: 'bar',
};
The issue with the proposed a ...= b
syntax, is that the ...
operator has different meanings depending on context, and that context is lacking in ...=
. More specifically:
a = [ ...a, ...b ];
Here, a
and b
are considered as iterables (as are arrays, sets, maps, generators), and the ...
operator iterates over the corresponding values or entries.
a = { ...a, ...b };
Here, a
and b
are considered as objects, and the ...
operator iterates over the corresponding properties
a ...= b
Should b
be treated as iterable or as object—knowing that a value is often both? A careful introspection on a
and/or b
may help to guess the intent, but the guess may be wrong.
BTW, instead of the proposed a ...= b
, you can already write as of today: Object.assign(a, b)
.
.
1 Like