I feel the exact opposite. It changed JS from a language I loathe to one I really like. There are no other mainstream languages with a similar type system, which means it's uniquely easy to do very complex things with type safety.<p>Even Rust is still nominally typed, which means you have a lot more boilerplate.
Anyone try out the tenets in <i>Reliable Javascript</i> (2015), pre-Typescript?<p>The authors praise--and begin with an example from--D3.js, and work through handrolled dependency injection, aspects, and test-driven development with Jasmine.<p>Truly understanding `this`, .bind, .apply, and .call may be essential to a mastery of (vanilla) Javascript.
Never have I related less with a take. TypeScript has elevated a truly mediocre language to being the one I am most productive in because its type system strikes such a nice balance. Where is the joy in looking at a variable named `opts` and having no clue what properties it can have?
This is the same typed vs. untyped argument which is as old as vi vs. emacs. Different devs have different requirements and preferences. Neither is "wrong". Some people are just naturally anal retentive pedants who must know their code is correct while writing it, even if it means downloading 500mb of build tools and requiring a jury rigged non-standard transpilation step for it to run. The fact that there's not a single example of a well written non-bloated open source project that uses TypeScript won't put them off, and that's perfectly OK! To each their own! Having yet another flame war about it, no matter how deluded many devs are, is just unproductive.
Rather than defend JavaScript, I just want to say that learning Ruby, and Rails, to me was an amazing experience. I've always enjoyed programming, and I've always preferred loosely typed languages, it was really fun to learn Ruby+Rails because it sets out to maximize the amount of joy that you can have writing code. That mindset is normally constrained to people writing hobby projects in uncommon languages. I think Rails is unmatched in striking a balance between code that is fun to write, and yet extremely productive.<p>(For those who don't know, the tweet author is the Rails creator.)
Writing TypeScript can be a bit hard or difficult at times. You can definitely get sucked into battles trying to figure out a lot of dumb shit that obviously works great but that you need to contort to something TypeScript can grok. Some of the errors it complains about are awful.<p>But on the other side, writing code consuming TypeScript libraries is amazing. Seeing all the type information in the IDE reveals so much, resolves so many questions, and builds confidence so quickly.<p>The other issue with TypeScript is that tooling is all awful & terrible. Tsconfig is a drag. There's a serious lack of good conventions to follow & tons of ad-hoc stringing shit together. Ideally libraries should output both esm & cjs but typescript literally doesn't support it & you have to run typescript twice, so now you maybe are introducing yet more new tools like concurrently if you want to do a good job. Oh and now your "watch" script is even more janked up too. Deno does a good job of making this pain all go away, but in general TypeScript is one of multiple layers of tooling that simply sucks, that thieves energy & attention.
General response to this is assuming the contrarians don't like type or see no type benefit. But there are those who love static typing enough to dislike Typescript. It's ugly and unsound, how could someone loves static type to death likes Typescript.