On Tue, Mar 21, 2017 at 11:49 AM, Michael J. Ryan <[email protected]>
wrote:
> I slightly disagree... mainly in that as it stands, we have a fairly loose
> type coercion system that allows almost anything to be coerced into a
> boolean... in this case "parse" at least in my mind means that it should
> cover the most common use cases. I understand that Boolean("false")
> doesn't currently work this way, and why Date.parse doesn't give a date
> instance is a bit beyond me.
>
> With my suggested polyfill your use case would work as expected...
> However, JS interacts with more than just serialized results from JS. It
> interacts with input from multiple systems, sources, users and good/bad the
> content of users. The type coercion as it exists for boolean is in order
> to provide for simplistic validation... why an empty string coerces false,
> for example. Much like we have defined "falsey" values in JS, I think that
> Boolean.parse should have common truthy values/strings that can predictably
> be converted as a true, where all else is false.
>
> If all it does is:
>
> input => String(input).toLowerCase() === 'true';
>
> what is the point of extending Boolean?
>
>
Yeah, all good points, but they open a door for more questions mentioned
above (so many different formats, "yes", "1", "on", etc, and "why one, but
not another?", and "why not i18n?").
So to reduce this, having a good MVP would be good. Then, if there is a
need, it can be extended by adding.
The actual practical use-case I want to solve is:
- Not to use "raw building material" (aka "syntactic garbage") to solve the
issue. With this I mean using non-semantic techniques to achieve the goal,
like RegExp testings, JSON.parsing, etc. This is also a building material:
"String(input).toLowerCase() === 'true';", and users want nice semantic
library.
- To solve `Boolean('false')` issue. This is an actual use-case I had, when
was asked why Boolean type coercion treats "false" as true, and there is no
good answer other than -- "it's specified so". So to keep backward compats
we need Boolean.parse(...) for this.
So the only question it needs to address whether we accept truthy/false
values, or only strings.
Dmitry
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss