Get currently destructured object

Tab Atkins Jr. jackalmage at gmail.com
Thu May 19 23:36:04 UTC 2016


On Thu, May 19, 2016 at 8:59 AM, Michał Wadas <michalwadas at gmail.com> wrote:
> Idea:
>
> function foo({bar, *: baz}) {
>
> }
>
> would be equivalent to:
>
> function foo(baz) {
>    const bar =  baz.bar;
> }
>
> Rationales:
> - little better IDE support (argument name reveals intention)
> - allows to write more concise code when handling case of getting common
> values and handling whole object optionally
> - improve pattern "use few properties of options object then pass it deeper"
> - allows more expressive module import
> - allows to more concise code when destructuring expression result
>
> import {*: rand, generateRandomInt} from 'fancy-random-module';
> import {*: moment, isMoment} from 'moment';

Other languages with destructing have a more explicit syntax for this
(giving a name to the container as well as its pieces), so that it
works in all the destructuring forms.  In Haskell, for example, it
looks like "baz@{bar}". This is usable with list destructuring, too.

~TJ


More information about the es-discuss mailing list