Destructuring into object
I presume you've read the historical threads on this topic, which go back several years. Bob
Yes, I've read it, but I doesn't find something like this:
target.{a,b,c} = srcObject
Thank You!
- Alexander Shvets transpiling/destructuring
You make an interesting point. The current proposal focuses on picking, meaning to make an entirely new object by plucking out properties. It doesn't envision setting properties into an existing object.
Rather than thinking about picking as an extension to object literal syntax, as I had been proposing in the following:
{ {p1, p2} = o }
which some people found a bit challenging, and to accomplish what you want, would require saying
target = { ...target, {a, b, c} = srcObject};
We can think of your syntax
target.{a,b,c} = srcObject;
as a kind of natural, obvious extension of dot notation. In other words,
whereas target.a = 42
sets the value of the a
property of object
target
to 42, your syntax sets multiple properties. It's almost as if
JavaScript had been waiting for two decades for this natural extension to
dot-based assignments to object properties.
The corresponding accessor syntax--reading out multiple property values--then obviously becomes
target.{a, b, c}
which is an equally natural, obvious extension of dot notation. In other
words, whereas target.a
obtains the value of the a
property of object
target
, this syntax obtains the value of multiple properties.
Given this nice symmetry and parity with other features, I have revised my
proposal back to an earlier version, where the picking syntax was
obj.{prop1, prop2}
. The revised version of the proposal, including
putting this structure on the left side of an assignment, is at
rtm/js-pick-notation.
To me, things seem pretty simple:
- There is a strong IRL need need for "picking"--plucking out, or setting multiple properties at a time.
- Existing dot notation such as
a.b
is almost begging us to extend it to allow this in the form ofa.{b,c}
. - The proposed extensions to dot notation have very small syntactic footprint.
- In doing this, we can take advantage of the powerful deconstructing assignment syntax already introduced.
Bob
An HTML attachment was scrubbed... URL: esdiscuss/attachments/20180226/28570d9a/attachment