Russell Leggett wrote:
On Mon, Jul 9, 2012 at 4:04 PM, Brendan Eich <[email protected]
<mailto:[email protected]>> wrote:
Russell Leggett wrote:
Options type objects:
let {url,callback,?errback} = options;
This lets you very clearly decompose an object and
declaratively show which values are optional and which ones
are not. If all of them are optional, the ? would just go to
the left of the brace, but really this should be the minority
case for most situations.
Dave and I had talked about prefix-? as applying only to property
names, since that covers all but the top level for object patterns:
{required, ?optional_shallow}
{required, ?optional_deep: {foo, bar, ?baz}}
but of course it leaves out the top level.
This makes a lot of sense. It is certainly smaller. I do worry,
though, that it might fall short for the people that would like
irrefutable destructuring. I had imagined that ?{a,b,c} could be used
in a case where all properties would be optional.
Yup. But as your previous mail noted, that might be a rare (hard) case
and hard cases make bad law. Or so they teach law students!
I did have a question about refutability. What would happen here?
let {?a,?b} = null;
Even though both properties are optional, would this still fail? Does
the {} imply some structure?
This is the separate ToObject vs. must-be-of-spec-Object-type issue. JS
in SpiderMonkey, Rhino, probably other engines today:
js> let {a,b} = null
typein:1: TypeError: null has no properties
js> let {a,b} = undefined
typein:2: TypeError: undefined has no properties
js> let {a,b} = 42
js> a
js> b
We need to resolve this one independently from the presence of prefix-?
on the left.
Right, this minority case could be left out. The array pattern
situation is stronger motivation for prefix-? applying to bindings
not property names.
Yes, I think that arrays are likely the strongest case for ? on
bindings. Something like this would be nice:
let [first,last,?company] = contact.split(",");
And certainly, if you wanted to be able to destructure a list of
arguments, some of which being optional, it would be very useful.
Ultimately, while I think I could personally do fine with fewer points
of prefix-?, I can see a few cases for it, especially on arrays. I
worry that without supporting these, refutable by default won't be
able to reach consensus.
I bet you are right. We'll be taking this up in a couple of weeks, it's
on the agenda. Thanks for your posts on the whole issue.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss