DEV Community

Cover image for How To Easily Convert From JavaScript React To TypeScript React For Beginners
Max Deale
Max Deale

Posted on

How To Easily Convert From JavaScript React To TypeScript React For Beginners

React is a popular JavaScript library for building user interfaces, and many developers start their journey with plain JavaScript. However, as your project grows, you might find yourself longing for better tooling, type safety, and improved maintainability. That's where TypeScript comes in! In this guide, we'll walk you through the step-by-step process of transitioning your JavaScript React project to TypeScript React.

Step 1: Install TypeScript
Before you can start using TypeScript in your React project, you need to install it. If you haven't already, navigate to your project's root directory in your terminal and run:

npm install --save typescript @types/react @types/react-dom
Enter fullscreen mode Exit fullscreen mode

This command installs TypeScript as well as the type definitions for React and React DOM.

Step 2: Rename Files to .tsx
TypeScript files have the extension .tsx for files containing JSX. Rename your existing .js or .jsx files to .tsx. For example, if you have a file named App.js, rename it to App.tsx.

Step 3: Convert Functional Components to TypeScript
Now, it's time to add type annotations to your components. Let's take an example functional component:

// Before

function Greeting(props) {
  return <div>Hello, {props.name}!</div>;
}
Enter fullscreen mode Exit fullscreen mode

Convert it to TypeScript like this:

// After

interface GreetingProps {
  name: string;
}

function Greeting(props: GreetingProps) {
  return <div>Hello, {props.name}!</div>;
}
Enter fullscreen mode Exit fullscreen mode

Here, we define an interface GreetingProps to specify the expected props and add type annotations to the props parameter.

Step 4: Type Your State
If your components have state, you'll need to type it as well. Here's an example:

// Before

class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    return (
      <div>
        <p>Count: {this.state.count}</p>
      </div>
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Convert it to TypeScript like this:

// After

interface CounterState {
  count: number;
}

class Counter extends React.Component<{}, CounterState> {
  constructor(props: {}) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    return (
      <div>
        <p>Count: {this.state.count}</p>
      </div>
    );
  }
}
Enter fullscreen mode Exit fullscreen mode

Step 5: Type Your Functions and Events
For event handlers and functions, you'll want to add type annotations as well. For example:

// Before

function handleClick(event) {
 // Handle the click event
}
// In your JSX:
<button onClick={handleClick}>Click me</button>
Enter fullscreen mode Exit fullscreen mode

Convert it to TypeScript like this:

// After

function handleClick(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) {
  // Handle the click event
}
// In your JSX:
<button onClick={handleClick}>Click me</button>
Enter fullscreen mode Exit fullscreen mode

By specifying the types for the event parameter, you get better IntelliSense and type safety.

Step 6: Install Additional TypeScript Packages (Optional)
Depending on your project's needs, you might want to install additional TypeScript packages. For example, axios for HTTP requests or react-router-dom for routing. Make sure to install their corresponding TypeScript type definitions as well if they're available.

Step 7: TypeScript Configuration
To enable TypeScript in your project, create a tsconfig.json file in your project's root directory. You can generate a basic configuration by running:

npx tsc --init
Enter fullscreen mode Exit fullscreen mode

Then, customize it according to your project's needs. Ensure the "jsx" option is set to "react".

Step 8: Testing and Debugging
With TypeScript integrated into your React project, run your development server (npm start) and start testing and debugging. TypeScript will provide helpful error messages and type checking to catch issues early in development.

Conclusion
Transitioning from JavaScript React to TypeScript React may seem daunting at first, but by following these easy steps, you can gradually add type safety and enhanced tooling to your project. TypeScript can help you catch errors early, improve code maintainability, and boost your confidence in your React applications.

Remember, you don't have to convert your entire project at once. Start with one component or feature and gradually expand TypeScript's usage as you become more comfortable with it. Happy coding!

Do you have any questions about the transition or TypeScript in React? Let's discuss in the comments below!

Top comments (0)