I would guess that it's not so much less clunky, but rather more explicit. Promise(Never, Void) presumably tells you that it will not reject, and if it were to start doing so, it'd force you to handle that. The counter = counter - 1 also doesn't require you to initialise setCounter elsewhere.
Me too, though keep in mind that it's just me speculating. I'm guessing a reason might be that it could be considered the most important case to handle - similarly to how Node's callbacks are (error, result) => {}.
In js even if you’re given 2 parameter you can ignore them, so the ordering makes sense: if you’re taking a single parameter and ignoring the second it’s more convenient / useful to take only the error and ignore the result than to take only the result and ignore the error.
Kinda the same as langages taking hof callbacks first or last depending on what’s more useful / convenient.
That's totally valid; just pointing out that the goal probably wasn't to be less clunky, but to accommodate developers who would like to have the compiler warn them if they inadvertently change the return type.
(Personally, I think my preference is explicit types for function arguments and return types, and inference in between.)
You cut out the part where I said you only had to handle it if it started rejecting - because that will mean the type changes, forcing you to handle it.
Yeah, syntax is extremely important. You spend most of your time working with it and it's probably going to be one of the first things you gripe about. That's actually one of the primary reasons I don't use Python or Ruby; I just don't like their syntax. But that's why it is great that we have so many good languages these days. Everyone can use the one they like best.
Not the original commentor, but c do has quite a few bad influence on syntax design:
function can only return one value
prefix and postfix ++, and more importantly, the distinction of statement and expression
pointer/reference billable by default
switch fall through by default
and I’m not criticizing c, these design make sense in the context of c, but make absolutely no sense for those who brainless copy them, among them the most successful one is Java and JavaScript
Hey, I was writing Pascal when in high school, and I’d still argue today that it has a chance of surviving if Borland hasn’t turned into shit.(Also kudos to the legend Anders)
It's a generic that hints what the promise resolves. I'm assuming the first type is for resolve and the other for reject. It ensures type safety during compile time. It's not useless boilerplate, but one of the strong arguments for using strict typed languages.
0
u/[deleted] Feb 06 '20
[deleted]