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