I share your feelings. These times, whenever I'm setting up a new TS project, feel like:
1) Look up "this months current way of doing things"
2) have a couple of horrible hours wrestling with tooling and the module system
3) add a new feature, install 1 lib with 30 deps
4) figure out that one dep does not work with TS/the chosen module system/whatever versioning related thing
5) go for a walk. scream into the void. come back to the desk.
6) browse through dozens of Github issues to figure out what is going on
7) decide to fork the according dep knowing that I'll hate myself in 3 months
8) ...
Yeah, so I'm kind of missing the good old YOLO JS times w/o semi-colons and stuff. But I need to say that I'm usually not opting for NodeJS for deep "OOP-alike" Domains. I think NodeJS' sweet spot is infrastructural things, MQ Consumers, glue code or little http fetching/posting orchestration scripts.
I never had too many issues without static typing because I intentionally kept things simple, had tests and rolled out updates consciously watching the ongoings.
This is exactly my experience. I think TypeScript is an amazing feat of engineering and one of the best typing systems in existence today, largely because it has to describe such an insane set of hacks common in the JavaScript ecosystem. TypeScript has contributed immensely to the theory of programming languages.
But the tooling and the ecosystem are nightmarish! It's skin-crawlingly awful to set up a new project, or to update anything, or add any dependency. This is not TypeScript's fault; not really. But literally everything from the IDEs to the package manager to the output messages are awful. I can even add to your list:
8) ignore hundreds of lines of SEVERE SECURITY ISSUES because literally all of them are false positives all the time
9) deal with Visual Studio constantly crashing, throwing up 600 "build errors" because it doesn't like the standard DOM typing definitions
10) struggle for days to compile and package all the TypeScript files into a re-usable library; give up, and instead set up a script to literally copy the raw *.ts files around.
This is exactly what I struggle a lot with. I just want JavaScript with simple type checking. TypeScript goes way overboard. I also hate TypeScript decorators. I've seen that grossly abused in codebases that just drive my insane.
1) Look up "this months current way of doing things"
2) have a couple of horrible hours wrestling with tooling and the module system
3) add a new feature, install 1 lib with 30 deps
4) figure out that one dep does not work with TS/the chosen module system/whatever versioning related thing
5) go for a walk. scream into the void. come back to the desk.
6) browse through dozens of Github issues to figure out what is going on
7) decide to fork the according dep knowing that I'll hate myself in 3 months
8) ...
Yeah, so I'm kind of missing the good old YOLO JS times w/o semi-colons and stuff. But I need to say that I'm usually not opting for NodeJS for deep "OOP-alike" Domains. I think NodeJS' sweet spot is infrastructural things, MQ Consumers, glue code or little http fetching/posting orchestration scripts. I never had too many issues without static typing because I intentionally kept things simple, had tests and rolled out updates consciously watching the ongoings.