Another similar thing I've used is with String interpolation; if you use a
similar pattern, e.g.,
``` `$[items.length} item${items.length !== 1 ? 's' : ''} in collection` ```
When you want to conditionally add either some text, or nothing at all, you
are forced to use the ternary with an empty string, or some workaround. In
terms of a proposal, the first thing I think we need to know is: can the
interpreter detect that it's in a template literal, in the same manner as
it detects ?... being in an object/array declaration context?
--
Dammit babies, you've got to be kind.
On Fri, 23 Aug 2019 at 02:01, Beknar Askarov
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