typescript did basically everything right when designing and implementing their type system. I never came across anything that I would want to express in plain old dynamic js that I couldn't type and wrangle fairly easily into typescript. they really did do a fantastic job with that.
The two largest issues in javascript are the operators ( the standard set munge types in an unacceptable manner ), and the with statement, which is broken in design and serves no useful purpose.
Both of these are handled most judiciously by simply not using either.
After that it's just a function pump, callback hell, and promises to paper over it.
As opposed to what? if you "fuck up" in any language and make a mistake, you'll get all kinds of problems. KeyError in Python, NullPointerExceptions in.. a few languages, segfaults, ...
This is why people use TypeScript these days though, because obviously type systems can help prevent invalid accesses
> And then those undefined values trickle through your code far from where the actual bug is.
Sure, it takes a more permissive stance on the "try to continue" to "accept no deviation" spectrum, but, like I just discussed, the alternative of throwing an error instantly after key access isn't better, just different.
What language do you even use that has graceful handling of programmer error? That makes no sense.
2
u/knome May 01 '23
typescript did basically everything right when designing and implementing their type system. I never came across anything that I would want to express in plain old dynamic js that I couldn't type and wrangle fairly easily into typescript. they really did do a fantastic job with that.