Fwd: proposal of function return with object destructor

# Новиков Денис (10 months ago)

An HTML attachment was scrubbed... URL: esdiscuss/attachments/20171010/e052cd3a/attachment

# Isiah Meadows (10 months ago)

You did start in the right spot! Search esdiscuss.com for "pick notation", though - it's pretty much the same thing, but an expression instead.

(TL;DR: it was rejected as overly specific, since it's maybe saving a couple lines of code, and it's also pretty easy to write a utility function if you find yourself doing this a lot. Also, Lodash and similar do have utility methods for this kind of thing.)

# Michael Rosefield (10 months ago)

I've had similar instances of using deconstruction as an annoying man-in-the-middle step; perhaps what is needed is a deconstruction operator, since assignment wouldn't work in, say a concise arrow function because it's not an expression:

// works, but is verbose (repeats declaration of deconstructed variables)
const result = doSomething()
  .then({ propA, foo: { propB }) => ({ propA, propB }))
  .then(doSomethingElse);

// doesn't work as assignment; assignment is not expression
const result = doSomething()
  .then(x => { { propA, foo: { propB } } = x)
  .then(doSomethingElse);

Perhaps what is needed is an operator that is effectively shorthand for creating a temporary object to hold the deconstructed assignments, and is allowed in expressions:

{ propA, foo: { propB } }) =< x
// equivalent to
Object.assign({}, { propA: x.propA }, { propB: x.foo.propB });

const result = doSomething()
  .then(x => { { propA, foo: { propB } } <= x)
  .then(doSomethingElse);

Ideally, I'd--

and then this email comes into the thread:

Isiah Meadows You did start in the right spot! Search esdiscuss.com for "pick

notation", though - it's pretty much the same thing, but an expression instead.

Well damnit...