Trailing commas in arguments list, imports and destructuring

Jussi Kalliokoski jussi.kalliokoski at gmail.com
Wed Apr 22 15:15:35 UTC 2015


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/1e8fc0cc/attachment.html>


More information about the es-discuss mailing list