Going from JS to TS

mgaroz

mgaroz

Posted on March 25, 2023

Going from JS to TS

Moving from JavaScript to TypeScript is a transition that requires time, effort, and patience. As a developer who has made this transition, I can attest to the many benefits of TypeScript. However, there are several hurdles that I had to overcome during this journey. Let's take a closer look at each of these challenges.

Learning Curve:

One of the most significant challenges of transitioning to TypeScript was the learning curve. TypeScript introduces new concepts, such as interfaces, classes, and type annotations, that I wasn't familiar with before. I had to invest time in learning these concepts and how they fit into the development process.

Javascript:

function add(a, b) {
  return a + b;
}
Enter fullscreen mode Exit fullscreen mode

Typescript:

function add(a: number, b: number): number {
  return a + b;
}
Enter fullscreen mode Exit fullscreen mode

In TypeScript, we have to specify the types of the function parameters and the return value. This was a new requirement that required some getting used to.

Configuration:

Setting up a TypeScript compiler and configuring my build tools and IDE to work with TypeScript was an additional task that I wasn't used to with JavaScript. This required me to research and understand the configuration process, which was a new challenge.

Type Annotations:

Adding type annotations to my code was a new requirement, which helped catch errors early but took some getting used to. I had to learn how to write type annotations and add them to my code, which was a challenge at first.

Javascript:

const user = {
  name: 'John',
  age: 30,
};
Enter fullscreen mode Exit fullscreen mode

Typescript:

interface User {
  name: string;
  age: number;
}

const user: User = {
  name: 'John',
  age: 30,
};
Enter fullscreen mode Exit fullscreen mode

In TypeScript, we can define interfaces to describe the shape of our objects. This makes the code more readable and easier to maintain over time.

Third-party Libraries:

Some third-party libraries that I had previously relied on did not have TypeScript support, which required me to search for TypeScript-compatible alternatives or write my type definitions. This was a time-consuming task, but it was necessary to ensure that all code was compatible with TypeScript.

Javascript

import axios from 'axios';

axios.get('https://api.example.com/data').then(response => {
  console.log(response.data);
});
Enter fullscreen mode Exit fullscreen mode

Typescript:

import axios, { AxiosResponse } from 'axios';

axios.get('https://api.example.com/data').then((response: AxiosResponse) => {
  console.log(response.data);
});
Enter fullscreen mode Exit fullscreen mode

In TypeScript, we have to import the types for third-party libraries to ensure that our code is compatible with TypeScript. This can be time-consuming, but it's necessary to ensure that our code is type-safe.

Legacy Code:

Working on an existing JavaScript project meant converting the codebase to TypeScript, which was a time-consuming process and introduced new errors. I had to spend time converting the codebase and fixing any errors that arose during the process.

Team Collaboration:

Transitioning to TypeScript with a team was a challenge, as some members were not familiar with TypeScript. Ensuring everyone followed the same coding conventions and style was crucial for successful collaboration. I had to invest time in training team members on TypeScript and ensuring that everyone was on the same page.

Benefit: Improved Code Organization

Javascript:

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}
Enter fullscreen mode Exit fullscreen mode

Typescript:

function add(a: number, b: number): number {
  return a + b;
}

function subtract(a: number, b: number): number {
  return a - b;
}
Enter fullscreen mode Exit fullscreen mode

In TypeScript, we have to specify the types of our function parameters and return values. This helps to ensure that our code is more organized and easier to understand.

Benefit: Early Error Detection

Javascript:

function add(a, b) {
  return a + b;
}

add('1', 2);
Enter fullscreen mode Exit fullscreen mode

Typescript:

function add(a: number, b: number): number {
  return a + b;
}

add('1', 2); // This will give a compile-time error
Enter fullscreen mode Exit fullscreen mode

In TypeScript, we can catch errors at compile-time, which helps to ensure that our code is more robust and easier to maintain over time.


Despite these challenges, transitioning to TypeScript was a rewarding experience. The benefits of improved code organization, readability, and scalability were evident, and I found that TypeScript made it easier to catch errors early in the development process. Additionally, the use of interfaces and type annotations helped to ensure that code was more robust and easier to maintain over time.

In conclusion, transitioning from JavaScript to TypeScript is a challenging but rewarding experience. It requires time, effort, and patience to overcome the hurdles, but the benefits of TypeScript make it all worthwhile. With proper training and collaboration, developers can make a smooth transition to TypeScript and enjoy the many benefits it offers.

💖 💪 🙅 🚩
mgaroz
mgaroz

Posted on March 25, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Going from JS to TS
javascript Going from JS to TS

March 25, 2023

Javascript Array Filter Method
javascript Javascript Array Filter Method

October 17, 2022

Javascript Array Reduce Method
javascript Javascript Array Reduce Method

October 16, 2022

Transpilers vs Compilers⚙
javascript Transpilers vs Compilers⚙

January 12, 2022