I've been in the industry for a while now and have had the fortune to talk with many people at different companies, in different roles, different regions of the world, and to even have backroom conversations at conferences I've attended or spoken at. And of course I also spend a lot of time online hearing many opinions from people. One conversation topic that always yields interesting (and sometimes hot) takes, is TypeScript.
I've compiled a list here of some quotes about TypeScript, people's (mostly unfiltered) opinions and experiences with it. All of these are "true", but they come from different perspectives, which add up to TypeScript's interesting reputation.
"JavaScript has problems. If you work with it long enough, you will run into these and you'll need to find a way to deal with them. TypeScript solves most of these problems out of the box for you. So it can be a good fit for those coming from another language, not interested in learning JavaScript deeply." - Library Author
"I worry that those new developers that want to eventually become JavaScript devs, will be robbed of the experiences of learning how to work around the dangers in JavaScript while still having access to the power of a loosely typed language. I can see them finding TypeScript and using it as a crutch and not understanding what JavaScript is fully capable of." - Senior Fullstack
"TS is a comfort blanket for backend developers." - Senior Frontend
I've heard this exact phrase repeated many times, typically from experienced frontend devs, sometimes jokingly, sometimes seriously.
"TypeScript is a miracle, I can finally touch the frontend without hating myself." - Backend Developer
"I will say this, TypeScript is training wheels for backend folks creeping their heads into frontend." - Software Engineer II
"TypeScript is a lot of extra work to solve problems I don't have, in ways I don't like." - author of the highly influential "You Don't Know JS" book series
This one quote very succinctly sums up the feelings of many of the others on this list.
"If you have a team of backend devs that need to do frontend occasionally, then TypeScript will likely be a very good fit for that team." - Conference talk on why to use TypeScript
"I've only looked at about 10 TypeScript codebases, but I've literally not been able to read the code in any of them. It's so ugly and badly designed. What monster came up with this?" - Frontend Engineer
"The architect at my last job kept trying to get everyone to adopt TypeScript, I was so happy to find out that our team didn't need to, it was a small internal project and TS would have been such a pain." - Backend Node.js Engineer
"I don't know if I dislike TypeScript, or just the way we use it at work. We had an existing codebase that was "converted" over to TS, but almost all the types were "any", and we had so much trouble getting 3rd party libraries to cooperate with it. Fighting with libraries slowed development way down. Not to mention, taking 20 seconds to compile after any save. From my understanding we basically got all the downsides with none of the upsides." - Junior dev
"I don't like TS at all, but my repo gets hundreds of contributors and I just use it as another form of automated enforcement so I can spend less time nitpicking in PR's." - Open source maintainer
"95% of what TypeScript gives you can be done with less effort and tooling by just using strict linting and JSDocs." - Senior Fullstack
As a fan of linting, I tend to agree with this. You can even lint your JSDoc comment block so the comments don't get out of sync with the code. And the TS engine in VSCode can infer types from these comment blocks, so she had a good point. It's a lot less tooling to get basically the same result.
Update: It is the future, and hundreds of projects are now switching away from TypeScript over to this JSDocs + Linting approach. The most notable of these is likely Svelte which is currently the 3rd most popular JavaScript framework. The primary reasons people are switching are:
- Ability to debug directly in prod
- Compatibility with all other tooling (including TS Engine and tsc)
- Better hover text
- Faster tools (no waiting for compilation)
- Easier on-boarding/lower barrier of entry
- Less controversial (as you can see in the quotes on this page, TS can be very contentious)
"We re-wrote our codebase in TypeScript and caught 30% more bugs." - Company Case Study
"Given the opportunity to do any form of major refactoring or re-writing of a codebase, you are likely to find and fix many bugs. For what purpose you are re-writing or what you are re-writing it to, is not relevant. Simply the focused attention on the improvement of the code, rather than the building of a feature will always yield this result." - Highly upvoted hackernews response to the above case study
A study of 211 Apache foundation projects found that bugs occurred at the same rate in both strongly and loosely typed languages. The only thing that effects bug rates is good testing practices. - Academic White paper
"If you already have very strict linting in place and high test coverage the time spent trying to get TypeScript to play nice is nothing but diminishing returns. Only go this path if the style of coding is strongly preferred by the team." - Software Architect
Again, all of these quotes are true, they just represent different perspectives. What is right for you will depend on your background, your team, and your goals.
Hope these perspectives help.
Cover art: Battle of Grenada by Jean-François Hue (1779)
Linus van Pelt from "Peanuts" by Charles Schulz
Ship Schematic from The Model Shipwright
Top comments (6)
these quotes are so good, I read three times through them, and every time understand more insights.
I like statically typed languages for the safety and transparency they give me but I am totally fed up fo waiting so long for the TS compiler to compile a relatively small amount of code multiple times per day.
People seriously underestimate the importance of feedback loops and TS hurts this a lot in my view.
Many of the negative responses are about converting old code bases. I agree with many of them that converting old code into typescript may not provide the return you want.
I do think new projects benefit a good bit from using typescript from the start. I do agree there’s no point in it if you just use any type everywhere.
I literally did an article after coming to this exact same conclusion only a few weeks ago:
dev.to/bytebodger/a-jsdoc-in-types...
I love all these quotes too but yet it's working so well for me right now haha.
The Endless Enigma...
Some comments may only be visible to logged-in visitors. Sign in to view all comments.