How to set up TypeScript for a Node.js project

Updated: December 2, 2023 By: Khue Post a comment

TypeScript can help you write more reliable and maintainable code for your Node.js projects. TypeScript code needs to be compiled into JavaScript before it can be executed by Node.js. You can use a tool called tsc (TypeScript compiler) to do that. You also need to install some type definitions for Node.js, which provide information about the types and interfaces of the Node.js module.

Setting up TypeScript in a Node.js project

The steps:

1. Create a new directory for your project and initialize it as a Node.js project with npm init -y. A new file named package.json will be created automatically to store your dependencies.

2. Install TypeScript as a development dependency with npm install --save-dev typescript. This will add TypeScript to your node_modules folder and update your package.json file.

3. Create a tsconfig.json file in the root of your project directory by running the following command:

npx tsc --init

This will generate a configuration file for the TypeScript compiler with some default options. You can modify this file according to your needs, but for this example, you can use the settings below:

{
  "compilerOptions": {
    "target": "es6", // specify the output language level
    "module": "commonjs", // specify the module system for Node.js
    "outDir": "./dist", // specify the output directory for compiled files
    "rootDir": "./src", // specify the input directory for source files
    "strict": true // enable strict mode for type checking
  }
}

4. Install the type definitions for Node.js with npm install --save-dev @types/node. This will add the type definitions to your development dependencies.

5. Create a src folder in your project directory and a index.ts file inside it. Here will be your main source file, where you can write your TypeScript code.

// src/index.ts
interface IUser {
    name: string;
    age: number;
}

const user: IUser = {
    name: 'John Doe',
    age: 33
};

console.log(user);

6. Compile your TypeScript code to JavaScript by running this command:

npx tsc

This will programmatically create a dist folder in your project directory and a index.js file inside it. You can see JavaScript code that can be executed by Node.js here.

7. Execute your JavaScript code:

node dist/index.js

Output:

{ name: 'John Doe', age: 33 }

Using Nodemon with TypeScript

Nodemon is a tool that automatically restarts your Node.js application when you make changes to your source files.  To use nodemon with TypeScript, you need to configure it to compile and run your TypeScript files with ts-node, which is a TypeScript execution engine. Here are the main steps to do that:

1. Install nodemon and ts-node as development dependencies. You can use the following command to install them with npm:

npm install --save-dev nodemon ts-node

2. Create a nodemon configuration file. You can create a file named nodemon.json in the root of your project directory and add the following settings:

{
  "watch": ["src"],
  "ext": "ts",
  "exec": "ts-node ./src/index.ts"
}

3. Run nodemon with the configuration file. You can use the following command to run nodemon with the nodemon.json file:

npx nodemon

Screenshot:

This will start nodemon in watch mode and run your TypeScript file with ts-node whenever you make any changes to your source files. You will save quite a bit of time as well as improve your coding experience.