Setting Up a Node.js Project with TypeScript

Table of Contents

  • Introduction
  • Prerequisites
  • Step 1: Install Node.js and npm
  • Step 2: Initialize a New Node.js Project
  • Step 3: Install TypeScript and Other Dependencies
  • Step 4: Configure TypeScript with tsconfig.json
  • Step 5: Write TypeScript Code
  • Step 6: Transpile TypeScript to JavaScript
  • Step 7: Run the Project
  • Step 8: Setting Up a Build Script for Continuous Development
  • Conclusion

Introduction

TypeScript is a statically typed superset of JavaScript that provides type safety and modern JavaScript features while still allowing you to compile to regular JavaScript. This makes it a great choice for Node.js development, as it adds type checking and other powerful features to enhance your coding experience.

In this article, we will walk through the steps to set up a Node.js project using TypeScript. By the end, you will have a fully functioning development environment where you can write, compile, and run TypeScript code in a Node.js application.


Prerequisites

Before we begin, ensure that you have the following tools installed on your machine:

  1. Node.js: You will need Node.js installed to manage packages and run your project.
  2. npm: Node Package Manager (npm) comes with Node.js and will be used to install dependencies.

To check if these tools are installed, open your terminal/command prompt and run:

node -v
npm -v

If Node.js and npm are not installed, you can download and install Node.js from here.


Step 1: Install Node.js and npm

If Node.js and npm are not installed, follow these steps to install them:

  1. Visit the Node.js website.
  2. Download the recommended LTS version for your operating system.
  3. Follow the installation instructions.

Once installed, verify the installation by checking the versions of Node.js and npm:

node -v
npm -v

Step 2: Initialize a New Node.js Project

Start by creating a new folder for your Node.js project. Navigate to the folder and initialize a new Node.js project:

mkdir my-node-ts-project
cd my-node-ts-project
npm init -y

This will generate a package.json file with default values.


Step 3: Install TypeScript and Other Dependencies

To set up TypeScript for your Node.js project, you need to install the TypeScript compiler and other dependencies. Run the following command:

npm install typescript @types/node --save-dev
  • typescript: This package includes the TypeScript compiler.
  • @types/node: This provides type definitions for Node.js, so TypeScript knows about Node’s built-in modules like fs, http, and more.

Additionally, you might want to install ts-node (for running TypeScript directly) and nodemon (for auto-reloading during development):

npm install ts-node nodemon --save-dev
  • ts-node: Allows you to run TypeScript code directly without compiling it first.
  • nodemon: Watches for file changes and restarts the application automatically.

Step 4: Configure TypeScript with tsconfig.json

TypeScript uses a configuration file called tsconfig.json to control how TypeScript behaves. To generate a tsconfig.json file, run:

npx tsc --init

This will generate a default tsconfig.json file. You can adjust this file according to your needs. Here’s a sample configuration for a Node.js project:

{
"compilerOptions": {
"target": "ES6", // Target JavaScript version
"module": "commonjs", // Use CommonJS modules (required for Node.js)
"outDir": "./dist", // Output directory for compiled files
"rootDir": "./src", // Root directory for TypeScript files
"esModuleInterop": true, // Enables compatibility with ES Modules
"strict": true, // Enable all strict type-checking options
"skipLibCheck": true, // Skip type checking of declaration files
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*.ts"], // Include all TypeScript files in the src directory
"exclude": ["node_modules"] // Exclude node_modules directory
}

Explanation of Important Fields:

  • "target": Specifies the JavaScript version to which TypeScript will compile. ES6 is typically a good choice for modern Node.js versions.
  • "module": For Node.js, use commonjs as the module system.
  • "outDir": Directory where the compiled JavaScript files will be placed.
  • "rootDir": Directory where the TypeScript source files are located (typically src).
  • "esModuleInterop": Ensures compatibility between CommonJS and ES Module imports.
  • "strict": Enables strict type-checking, which is highly recommended for better type safety.

Step 5: Write TypeScript Code

Now that TypeScript is set up, you can start writing TypeScript code. Create a folder named src in your project directory:

mkdir src

Inside the src folder, create a file called index.ts:

// src/index.ts

console.log("Hello, TypeScript and Node.js!");

// Function with TypeScript type annotations
const sum = (a: number, b: number): number => {
return a + b;
};

console.log("Sum of 5 and 7:", sum(5, 7));

Step 6: Transpile TypeScript to JavaScript

Once you’ve written your TypeScript code, you need to compile it into JavaScript using the TypeScript compiler (tsc). To compile the code, run:

npx tsc

This will compile your TypeScript files in the src folder and output the JavaScript files into the dist folder (as specified in the tsconfig.json).


Step 7: Run the Project

You can now run your compiled JavaScript code. Since we used commonjs as the module system, you can run the output JavaScript using Node.js:

node dist/index.js

Alternatively, if you installed ts-node earlier, you can run TypeScript files directly without compiling them manually:

npx ts-node src/index.ts

This will directly run your TypeScript code.


Step 8: Setting Up a Build Script for Continuous Development

To streamline the development process, you can set up a build script in your package.json to run the project more easily. Add the following to the "scripts" section of package.json:

{
"scripts": {
"build": "tsc",
"start": "node dist/index.js",
"dev": "nodemon -x \"ts-node\" src/index.ts"
}
}
  • build: Compiles TypeScript code to JavaScript using the TypeScript compiler.
  • start: Runs the compiled JavaScript code using Node.js.
  • dev: Uses nodemon to watch for file changes and run the TypeScript code using ts-node.

To run the project in development mode (with automatic reloading), you can now run:

npm run dev

Conclusion

By following these steps, you now have a Node.js project set up with TypeScript, providing you with the benefits of type safety and modern JavaScript features while running in a Node.js environment. You can now write, compile, and run TypeScript code with ease.

Additionally, using tools like ts-node and nodemon can significantly enhance your development experience by allowing you to run TypeScript directly and watch for file changes during development.

With this setup, you can confidently build scalable and type-safe applications using TypeScript and Node.js.