Since you can do this now with:

```js
[
  1,
  ...(condition ? [2, 3] : []),
  3,
]
```
and object spreading already handles this for you, is extra syntax really
needed?

On Thu, Aug 22, 2019 at 6:52 PM Scott Rudiger <scottrudi...@gmail.com>
wrote:

> I like it; code seems cleaner to me with its use. However, since the
> syntax is so similar to optional chaining, it's too bad your goal with this
> sample is to check for falsey values rather than nullish values.
>
> [ 1, ?...(condition && [2, 3]), // no extras:) 3, ]
>
> On Thu, Aug 22, 2019, 6:01 PM Beknar Askarov <beknaraska...@gmail.com>
> wrote:
>
>> Problem
>>
>> Spreading is great! It contributes towards "declerativity" of the
>> language and reduces verbosity. I see one more feature to add to improve it.
>>
>> Consider following
>>
>> [
>>   1,
>>   condition && 2,
>>   condition && 3,
>>   4,
>> ].filter(Boolean) // filtering needed to remove falsy values
>> // Results in
>> [1, 2, 3, 4] // if condition is `truthy`// and
>> [1, 4] // if not truthy.
>>
>> Another way to achieve the same result without the need of filtering after
>>
>> [
>>   1,
>>    ...(condition ? [2, 3] : []), // note extra [] in the end, to avoid errors
>>   4,
>> ]
>>
>> Similar pattern with objects
>>
>> {
>>   ...(condition ? { foo: 'bar' } : {}), // extra {}
>> }
>>
>> Another pattern is when condition is the object itself, when it is known
>> that type is one or falsy
>>
>> [
>>   item1,
>>   item2,
>>   ...(itemsOrNull || []) // extra []
>> ]
>>
>> Similar for objects
>>
>> {
>>   ...(obj || {}), // extra {}
>> }
>>
>> I see these patterns appearing very often. And these are cleanest
>> examples I have seen so far.
>> ProposalOptional spreadingWith condition
>>
>> // Arrays
>> [
>>   1,
>>   ?...(condition && [2, 3]), // no extras:)
>>   3,
>> ]// Objects
>> {
>>   ?...(condition && { foo: 'bar' }) // no extras:)
>> }
>>
>> When condition is the object
>>
>> [
>>   item1,
>>   item2,
>>   ?...itemsOrNull // no extras at all:) even (...)
>> ]
>>
>> These look nicer and can be good for performance since (?...), since no
>> cleanup is needed after to remove falsy values or extra spreading even when
>> it is not needed.
>>
>> Looks intuitive (since:
>> https://github.com/tc39/proposal-optional-chaining)
>> Plays nice with typeings.
>>
>> What do you think? https://es.discourse.group/t/optional-spreading/93
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to