Indeed. I see your point. But it really needs to be falsy check. Since falsy values are not "spreadable"
On Fri, 23 Aug 2019, 03:52 Scott Rudiger, <[email protected]> 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 <[email protected]> > 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 >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

