Trailing commas in arguments list, imports and destructuring
Sebastian McKenzie
sebmck at gmail.com
Wed Apr 22 15:24:11 UTC 2015
Note that you’ve got the experimental REPL option enabled which means all transformers are enabled which includes the `es7.trailingFunctionCommas` one which allows trailing commas in function parameter lists and call expressions.
The destructuring grammar does allow trailing commas (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-destructuring-binding-patterns):
ObjectBindingPattern[Yield,GeneratorParameter] :
{ BindingPropertyList[?Yield,?GeneratorParameter] , }
ArrayBindingPattern[Yield,GeneratorParameter] :
[ BindingElementList[?Yield, ?GeneratorParameter] , Elisionopt BindingRestElement[?Yield, ?GeneratorParameter]opt]
And import specifiers allow trailing commas too (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-imports
):
NamedImports :
{ ImportsList , }
On Wed, Apr 22, 2015 at 4:16 PM, Jussi Kalliokoski
<jussi.kalliokoski at gmail.com> wrote:
> I just noticed that Babel support trailing commas in function arguments
> lists, imports and destructuring as well:
> http://babeljs.io/repl/#?experimental=true&evaluate=true&loose=false&spec=false&code=import%20%7B%0A%20%20voo%2C%0A%20%20doo%2C%0A%7D%20from%20%22.%2Fdat.js%22%3B%0A%0Alet%20%7B%0A%20%20x%2C%0A%20%20y%2C%0A%7D%20%3D%20voo%3B%0A%0Alet%20%5B%0A%20%20z%2C%0A%20%20m%2C%0A%5D%20%3D%20doo%3B%0A%0Afunction%20qoo%20(%0A%20%20x%2C%0A%20%20y%2C%0A)%20%7B%7D
> Is this correct behavior? I'm not
> FWIW as I already use trailing commas object and array literals for better
> diffs, I really like this feature as it comes in handy especially in
> function signatures where you define types (TypeScript/flow style
> annotations), for example:
> function sort <T> (
> array : Array<T>,
> compareFn : ((left: T, right: T) => number),
> ) : Array<T> {
> ...
> }
> as well as import statements for modules that declare constants:
> import {
> BRAND_COLOR,
> DEFAULT_TEXT_COLOR,
> DARK_GRAY,
> LIGHT_GRAY,
> } from "./constants/COLORS";
> not to mention "options object" style function signatures:
> class Person {
> constructor ({
> firstName,
> lastName,
> birthDate,
> country,
> city,
> zipCode,
> }) {
> this.firstName = firstName;
> this.lastName = lastName;
> this.birthDate = birthDate;
> this.country = country;
> this.city = city;
> this.zipCode = zipCode;
> }
> }
> To me, the spec language as per Jason's HTML version looks like at least
> for destructuring this is supported, but at least I can't read the spec to
> allow trailing commas in function signatures. At least this doesn't seem to
> be incorporated into the spec:
> https://esdiscuss.org/notes/2014-09/trailing_comma_proposal.pdf
> Is the proposal still on track for ES7 and am I correct in my reading of
> the destructuring allowing trailing commas?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150422/3054141d/attachment.html>
More information about the es-discuss
mailing list