I JavaScript, has a spread-like operator for optional elements been considered? Something like:
['a', ?'b']
=> ['a', 'b']
['a', ?null]
=> ['a']
I know you can emulate this with a spread + conditional + array literal, but I think this could be way simpler to understand.
@rauschma or any other JavaScript experts
@aismallard @rauschma I agree. Something like this?
Promise.all([
? condition1 ? task1() : null,
? condition2 ? task2() : null,
? condition3 ? task3() : null,
])
If so, it raises a couple interesting points:
- Having it be null-based requires the explicit null in the false branch of the conditional. A falsey-based version (e.g. prefix &) would allow for something even more streamlined.
- Although not applicable to Promise.all, I can imagine similar syntax for conditional arguments to variadic functions.
@aismallard yeah, it's possible it might have to be parenthesized. I think there's some reason to think it could be workable tho since this would always be in the context of a list item, either after the opening `[` or a `,`.
As mentioned in my other comment, if you had prefix &, you'd have
Promise.all([
& condition1 && task1()
& condition2 && task2()
& condition3 && task3()
])
which is even less noisy.
@acjay It feels a little too niche to me, but you can ask for feedback here: https://es.discourse.group
Note that TC39 tends to be very conservative w.r.t. adding things to the language (I know because I had suggestions too in the past 😀).
Spreading as a work-around can become more elegant if “add no elements” is represented by an empty Array.
@rauschma Sorry for the delayed response, but thanks, Axel!
@acjay @rauschma Combined with Promise.all() you could have a nice conditional set of parallel tasks!