News for hackers. Stuff that matters.
Re:Using the switch(true) pattern in JavaScript by 0xcoffee on Monday April 12, 2021 @11:40AM (#26780640)
I've also seen code written as:

  _ = !isDefined(user) && throw new Error("User must be defined.");  
  _ = !isString(user.firstName) && throw new Error("User's first name must be a string");
But I while it is concise, I can also understand why people prefer regular if statements.

Doesn't seem to be valid JS, can't remember where I got it from

Re:Using the switch(true) pattern in JavaScript by CloselyChunky on Monday April 12, 2021 @11:46AM (#26780722)
In my opinion this pattern is better if you write it like this:

  _ = isDefined(user) || throw new Error("user must be defined")
This reads way more natural for me. "A user is defined OR throw an error"...

I've also seen this in Perl (`do_something() || die()`) and shell scripts (`grep -q || die "not found"`).

Re:Using the switch(true) pattern in JavaScript by pxx on Monday April 12, 2021 @03:07PM (#26783694)
In perl you would want to use `or` instead of `||` to take advantage of the low precedence, so you can type things like `dostuff $foo or die` which is logically 'do stuff, and if it fails, die' as opposed to 'die if $foo is false', which you'd get with ||
Re:Using the switch(true) pattern in JavaScript by lhorie on Monday April 12, 2021 @12:25PM (#26781332)
It's a stage 2 proposal, which technically can be used today via babel[0] (though personally, I don't recommend using stuff below stage 4)

[0] https://babeljs.io/docs/en/babel-plugin-proposal-throw-expre...

Re:Using the switch(true) pattern in JavaScript by IggleSniggle on Monday April 12, 2021 @04:54PM (#26785041)
My preference for this is to use an assertion function, eg in nodejs:

assert(isDefined(user),”User must be defined”) // throws if Falsy

Re:Using the switch(true) pattern in JavaScript by d1sxeyes on Monday April 12, 2021 @05:06PM (#26785191)
This pattern is quite common in React to do conditional rendering:

  {isLoading && <Loading />}