Embracing TypeScript 🚀

20 October 2022 / Article / Satrio

embracing typescript

TL;DR

Jumping into TypeScript initially felt like trying to decode a secret language. But with some patience, cool tools, and absorbing wisdom from others, I began to vibe with it. Here's a breakdown of what I've picked up and how I got cozy with TypeScript.


Remember my last post where I talked about my first steps with TypeScript? Well, it's been two years since then! And here I am, entrenched in the TypeScript world. I've been deep-diving into TypeScript, using it for pretty much everything - from my fun personal projects to the serious stuff at work. So, how do I feel about TypeScript now that it's become an integral part of my coding routine? Let's chat about my journey and where I stand now.

Slow and Steady Wins the Race 🐢

Errors, especially in TypeScript, can be cryptic. The immediate reaction could be a mix of panic, frustration, and the temptation to apply a quick fix. However, the key is patience. Reading the error message deliberately and slowly can often unveil the root of the issue. To aid this process, I use this VSCode plugins called "pretty-ts-errors". This tool transformed complex error messages into more digestible and understandable formats, guiding me to the solution rather than adding to the confusion.

Dive into the Docs 📚

Basic type annotations in TypeScript, like string or number, are quite intuitive. But TypeScript offers a plethora of advanced techniques that can seem intimidating initially. Concepts like Omit, Pick, unions, and intersections add layers of depth to type annotations. That's when the official TypeScript docs come in clutch. The docs not only provide definitions but also practical examples, making complex ideas more tangible. They're like the user manual but actually helpful.

Embracing Third-Party Libraries 🧐

In our modern development ecosystem, relying on third-party libraries is commonplace. However, not all these libraries come with TypeScript support. This is where "@types/<library-name>" becomes invaluable. Just search for the @types at npm package for the library. most of the widely used library has this types on npm package. By importing these type definitions, I could ensure type safety even when using external libraries, making my applications more robust and future-proof.

Practice Makes Perfect 👩‍💻

Theory without practice is like a car without fuel. While understanding concepts is crucial, applying them in real-world scenarios is what solidifies knowledge. With this belief, I went all in and started converting all of my JavaScript projects to TypeScript. It was a ride, with some bumps along the way. Challenging, sometimes even grueling, but it was in these moments of struggle that true learning occurred. It was totally worth it!

Learning from the Masters 👁️

One of the most potent ways of learning is by observing others. Platforms like GitHub are treasure troves of knowledge. Analyzing codebases, both large and small, unveiled TypeScript techniques I wasn't even aware of. Each exploration session ended with me having a new trick up my sleeve. Every time I found something cool, I'd try it out in my own projects.

Avoiding <any> as the Easy Way Out 🚫

I know. Using <any> is tempting. But think of it as a cheat code. It's fun for a while, but it takes away from the real game. The allure of the <any> type in TypeScript is strong, especially when faced with a pesky error that refuses to budge. It might provide immediate relief, but in the long run, it's a breeding ground for bugs and inconsistencies. Embracing the challenge, understanding the problem, and finding a typed solution always pays off in the long run.

The Payoff 💡

Transitioning to TypeScript undoubtedly introduces an initial overhead in terms of development time. However, this investment reaps rich dividends. The early detection of bugs, improved code readability, and the assurance of type safety are just a few of the myriad benefits. It's a classic case of spending a bit more time upfront to save a significant amount of time and effort in maintenance and debugging later.

In wrapping up, after rolling with TypeScript on the daily for two years, I've got to say, we're pretty tight now. Sure, there are still some advanced tricks I need to master, but overall, I'm vibing with it. It's been one heck of a journey, and I'm grateful for every twist and turn. Big shoutout to the journey for making me and TypeScript such good pals! 🚀