Back to blog

Optimizing Typescript for Enterprise Projects with tsconfig and eslint

Maximizing Productivity and Code Quality with Best Practices for Configuration

Tuesday, December 20, 2022

Typescript is a popular programming language that provides strong typing and other features to JavaScript. It is particularly useful for enterprise and complex projects, where codebase size and complexity can make maintaining and extending the code difficult.

In this blog post, we’ll explore the benefits of using Typescript in enterprise projects, and provide some best practices for configuring Typescript with tsconfig and eslint. We’ll also show you how to set up a Continuous Integration/Continuous Deployment (CI/CD) pipeline to automate the process of linting your code.

Why Use Typescript in Enterprise Projects?

Typescript brings several benefits to the table when it comes to enterprise projects.

First and foremost, Typescript’s strong typing helps catch errors earlier in the development process. This can save time and effort down the line by preventing bugs from making it into production.

In addition, Typescript’s type system allows for better code documentation and understanding. When working on a large codebase with multiple developers, it can be difficult to understand the intent and behavior of each piece of code. Typescript’s type annotations can help make this process easier, allowing developers to more easily understand how different parts of the codebase are intended to work together.

Finally, Typescript’s built-in support for features like interfaces and classes can help make your code more maintainable and extensible. These features can help you create more modular, reusable code, which can save time and effort when working on complex projects.

Configuring Typescript with tsconfig

To get started with Typescript in your project, you’ll need to create a tsconfig.json file. This file allows you to configure various aspects of how Typescript will be compiled and used in your project.

Here’s an example tsconfig.json configuration that you can use as a starting point:

  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  "include": ["src/**/*"]

This configuration sets the target language level to ES5, the module format to CommonJS, and enables strict mode and ES module interop. It also tells Typescript to enforce consistent casing in file names.

You can adjust these options to meet the specific needs of your project. For example, if you want to target a newer version of JavaScript, you can set the target option to es6 or higher.

Configuring eslint with Typescript

In addition to configuring Typescript itself, you may also want to use a linter like eslint to catch errors and enforce coding standards in your project.

To use eslint with Typescript, you’ll need to install the following dependencies:

npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin

Next, create a .eslintrc.json file in the root of your project, and add the following configuration:

  "parser": "@typescript-eslint/parser",
  "extends": [
  "rules": {
    "semi": "error",
    "@typescript-eslint/no-unused-vars": "warn"

This configuration extends the @typescript-eslint/recommended configuration, which includes a set of recommended rules for linting Typescript code. It also sets the semi rule to error, which will cause eslint to report an error if you forget to include a semicolon at the end of a statement. Finally, it sets the @typescript-eslint/no-unused-vars rule to warn, which will cause eslint to report a warning if you have unused variables in your code.

You can customize these rules to fit the needs of your project. For example, if you want to enforce a particular coding style, you can use the @typescript-eslint/indent rule to specify the desired indentation level. Automating Linting with a CI/CD Pipeline

Once you have your tsconfig and eslint configurations set up, you may want to automate the process of linting your code. One way to do this is to set up a CI/CD pipeline that runs the linting process automatically every time you commit changes to your codebase.

To set this up, you’ll need to create a .gitlab-ci.yml file in the root of your project. This file defines a set of jobs that will be run by GitLab CI/CD every time you push changes to your code repository.

Here’s an example .gitlab-ci.yml file that runs the tsc and eslint commands on every commit:

    - tsc
    - eslint .

This job will run the tsc command to compile your Typescript code, and the eslint command to lint your code. If either of these commands fail, the job will fail and the pipeline will stop.

You can adjust this configuration to fit the needs of your project. For example, if you want to run the linting process on a specific branch or set of branches, you can use the only keyword to specify which branches to run the job on.


Typescript is a powerful tool for enterprise and complex projects, providing strong typing and other features that can help you write better, more maintainable code. By properly configuring tsconfig and eslint, and automating the linting process with a CI/CD pipeline, you can ensure that your code is always of high quality and ready for deployment.

So go forth and conquer the world of enterprise projects with Typescript! (Just don’t forget to properly configure everything first.)