Good read. You have legit writing talent!
It's worth noting TS influencers (I hate that that's now a thing in the engineering world) who know nothing about Turbo were freaking out creating internet drama and trashing DHH all while not realizing removing TS changed nothing for the library's users - you don't interface with Turbo through JavaScript. Turbo API is HTML. Removing TS was strictly to make the maintainer's job easier.
Your article... These arguments in support of TS are nothing new and I'm not suggesting they're wrong or bad, but there's strong counter-arguments to these that are universally ignored by folks who feel a strong affinity toward TS. They are:
Yes, types already exist in JavaScript - let's use them! And create your own and use those too: if (color instanceof Color) setPaintBrush(color);
There are dozens of features built into JavaScript that developers are unfamiliar with and don't use because they have been taught you need TS to do those kinds of things
Tests are still 100% necessary. "But it compiled" is a bit of a joke even among strongly typed language communities like Java. It is a common misunderstanding of junior engineers that compiled = no bugs. TS hype reinforces this misunderstanding (not suggesting your article does that, but there's massive amounts of unbridled TS hype out there misleading developers)
Intellisense and autocomplete is as good and often better with JSDoc
I say better because all the TS projects I have worked on have no comments at all. Developers mistakenly assume typedefs and interfaces tell other developers everything they'll need to know. That's frequently not the case. In healthy codebases TS typedefs ironically have JSDoc comments to provide helpful and necessary information that TS can't, which is shown by intellisense
Intellisense and autocomplete is powered by the same ts engine built into the IDE so the developer experience with JSDoc is the same as TS - the UI in my IDE is identical between the two
You get type warnings with JSDoc too. Again, it's powered by the same ts engine built into the IDE
TS adds bloat to your app bundle
TS requires a build step and as such slows down your builds
TS requires ongoing configuration and updates, JSDoc requires nothing whatsoever - it's just vanilla JavaScript comments made magical by the IDE
TS makes zero guarantees about runtime safety, which is what really matters
TS can do nothing about more common bugs like CSS and logical errors
I tracked bugs for almost 3 years on a medium-sized app and out of 68 (I think that was the total) only 1 could have been prevented with TS
We need to stop getting emotionally attached to technology. I'm guilty of this too🫣 It's weakening the software engineering culture and it moves important objective facts off the table