DEV Community

Cover image for The Harsh Truth: JavaScript is Dead
Evotik
Evotik

Posted on

The Harsh Truth: JavaScript is Dead

Listen up, coders! I know you're probably wondering why you should even bother with TypeScript when you've been rocking it with good ol' JavaScript for years. After all, JavaScript is the OG language of the web, and it's gotten you this far, right? Well, hold onto your keyboards because I'm about to drop some knowledge bombs on why TypeScript might just be the upgrade you didn't know you needed.

First things first, let's address the elephant in the room – TypeScript is a superset of JavaScript, which means you're not really leaving your beloved JS behind. Think of TypeScript as JavaScript with a fancy new suit and some serious superpowers. It's like your favorite superhero getting a fresh new costume and a whole bunch of cool gadgets to make their job even easier.

Now, let's dive into the real meat of why TypeScript is causing such a stir in the coding community. Type safety, my friends, type safety. In JavaScript, you can assign any value to any variable, which can lead to all sorts of chaos and unexpected behavior. It's like trying to herd a bunch of cats – you never know when one of them is going to slip through the cracks and cause mayhem.

With TypeScript, though, you have to declare the type of each variable, which means you can catch those silly type-related bugs before they even have a chance to party in your codebase. It's like having a bouncer at the club, keeping all the troublemakers out and ensuring only the cool kids (the right data types) get in.

But wait, there's more! TypeScript also comes with some sweet tooling that makes your coding life a whole lot easier. Ever heard of Intellisense? It's like having a super-smart coding buddy that suggests what you should type next. No more hunting through documentation or struggling to remember method names – TypeScript's got your back.

And let's not forget about refactoring. In JavaScript, renaming a variable or function can be a nightmare. You have to manually find and replace every instance, and if you miss one, you're in for a world of hurt. With TypeScript, though, you can just rename it once, and the compiler will automatically update all the references for you. It's like having a personal assistant that's way better at finding and replacing than you'll ever be.

Now, I know what you're thinking: "But, TypeScript is just extra overhead. Why bother?" Well, my friend, let me tell you why. Sure, TypeScript has a bit of a learning curve, but once you get the hang of it, it'll save you so much time and headaches in the long run especially in a multi dev project like we do at evotik. Think about it – catching those pesky bugs early means less time spent debugging and more time spent actually building cool stuff.

But here's where things get a little controversial. Some developers argue that TypeScript goes against the principles of JavaScript, which was designed to be a dynamic, flexible language. They say that by introducing static typing, TypeScript takes away some of that flexibility and freedom that made JavaScript so appealing in the first place.

On the other hand, TypeScript's proponents argue that the benefits of type safety and tooling far outweigh any perceived loss of flexibility. They point out that as codebases grow larger and more complex, the added structure and organization that TypeScript provides becomes invaluable.

Personally, I'm firmly on Team TypeScript. Sure, JavaScript is great, but TypeScript is like JavaScript on steroids (without the legal implications, of course). It takes everything you love about JS and adds a whole bunch of features that make your life as a developer easier and more efficient.

But hey, don't just take my word for it. Tons of big-name companies like Microsoft, Google, and Airbnb have already jumped on the TypeScript bandwagon. And if it's good enough for them, it's definitely good enough for us mere mortals.

So, what are you waiting for? Ditch that JavaScript and level up your coding game with TypeScript. Your future self will thank you for all the headaches you avoided and the sweet, sweet type safety you embraced. Trust me, once you go TypeScript, you'll never want to go back. Unless, of course, you're one of those rebel coders who lives for chaos and unpredictability. In that case, you do you, my friend.

If you disagree or think otherwise leave a comment here explaining your point(s) and argument(s).

Top comments (7)

Collapse
 
miketalbot profile image
Mike Talbot ⭐

I'll stick to JS thanks. I can't be bothered typing all of those extra letters to define types for things when JSDoc provides me all the same intellisense benefits without wrangling how to tell a type checker that I know what I'm doing at every twist and turn :)

In the last couple of years, how many times have my dev team had a serious runtime bug due to this approach? IDK, I can't think of any. The code is out, tests pass, it's robust, and it's probably 15% smaller than the equivalent TS code. TS code at runtime is just JS, compilation is looking for some type-related bugs up front - but JSDoc and a decent linter or IDE do this as I type in JS.

If there's a vital case for TS, then it's not been proven in my < 100 people dev teams. Perhaps in larger teams or where skill levels vary a lot then forcing this kind of bug out might help. For me, JavaScript is a flexible language, TypeScript makes me jump through hoops to give me back what I already had.

Collapse
 
bcostaaa01 profile image
Bruno • Edited

JavaScript is not necessarily dead, and in order to use Typescript, you have to use (guess what) JavaScript 😉 but I do find writing Typescript sometimes better than vanilla, that is a reality 😅 One particular case is when it starts giving you all those undefined errors when you try to access a variable or property, and then you have to find out why. It just annoys me 😂 I don’t agree with the sentence of ditching JavaScript completely however, because sometimes it is more complex than it sounds, and it involves changing a whole bunch of code and configuration in an already existing system.

Collapse
 
eerk profile image
eerk

Agree that TS is great, but don't forget that some TS features are also available in JS. For example, if your JS project includes the type definitions for a library (usually it's in the node_modules folder), you will get intellisense / autocomplete in javascript. You can also get intellisense in JS for your own code by setting checkJS:true and using @param.

Collapse
 
theatom06 profile image
u5106

facts. Great post

Collapse
 
cairnswm profile image
William Cairns

You assume that type safety is a good thing. Why is that?

Collapse
 
ekwoka profile image
Eric Kwoka

While typesafety is good, renaming the values is not a part of typescript.

It's the same issue.

You can use vscode f2 to rename something and it changes all references.

In JS and TS.

Collapse
 
jjamini profile image
Noah

I don't know about TS, but I totally agree on the points you talked about.
Nice post.