Comment utiliser TypeScript avec Node.js
Tags: beginners, typescript, node, french
Published: 2023-02-02 00:00:24

Après ma formation CDA (Concepteur Développeur d’Applications), j’ai pu trouver du temps pour travailler sur mes projets personnels. Je me suis notamment concentré sur le langage TypeScript car j’ai vraiment envie de l’apprendre. J’ai déjà travaillé avec sur mon projet de stage mais j’ai besoin d’enrichir mes compétences sur ce langage.
Pour cela, j’ai créé un projet `NodeJS` avec un fichier au format « `.ts` ». Sur le `package.json` , j'ai ajouté l'entrée `"start"` avec la valeur `"node index.ts"` pour lancer mon projet :

```json
"scripts": {
    "start": "node index.ts"
  },
```

J’ai rencontré un problème parce que mon projet ne s'est pas lancé. J'ai compris que j’avais oublié que NodeJS ne fonctionnait pas avec `TypeScript` . NodeJS est un outil pour exécuter JavaScript et non TypeScript. J'ai alors recherché sur le internet pour trouver une solution, pour réussir à exécuter TypeScript avec NodeJS et j’ai trouvé quelques solutions. Dans ce poste j'ai mis à disposition une liste de ces solutions, j’espère que ça vous aidera.

## 1- typescript (tsc)

La première solution est d’utiliser le package `typescript` , vous devez installer ce package avec la commande suivante :

```bash
npm i -D typescript

```

Vous pouvez également utiliser cette autre commande, pour configurer le compilateur. Par exemple, choisir la version `ECMAScript` ou le directory pour la sortie des fichiers `.js` :

```bash
npx tsc --init
```

Ou sinon vous pouvez utiliser cet exemple dans le fichier « `tsconfig.json` » :

```json
{
  "compilerOptions": {
    "outDir": "dist",
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "sourceMap": true,
    "noImplicitAny": true
  },
  "include": ["**/*"]
}
```

Et enfin avec la commande suivante, vous pouvez convertir vos fichiers `.ts` en `.js`

```bash
tsc -p .
```

Si vous avez fait attention à la dernière commande, elle s’arrête après son exécution. Cela signifie que pour chaque changement, on force l'exécution de cette commande pour convertir nos fichiers `.ts` en `.js` . Il existe cependant une meilleure solution qui consiste à ajouter le flag `—watch` à la fin de la commande, pour que la compilation ne s’arrête pas et que chaque changement soit automatiquement converti lorsque vous enregistrez vos fichiers `.ts` .

```bash
npx tsc -p . --watch
```

Pour terminer, vous devez ajouter l’entrée suivante sur la propriété `scripts` dans le fichier `package.json` et exécuter la commande `npm start` dans votre terminal :

```json
"scripts": {
    "start": "node dist/index.js"
  },
```

🌐 Plus de détails : [Docs](https://www.typescriptlang.org/docs/)

## 2- nodemon

La deuxième solution est d’utiliser l’outil `nodemon`. Pour cela vous devez installer les packages suivants :

```bash
npm i -D nodemon @types/node ts-node typescript
```

Ensuite, ajouter l’entrée suivante sur la propriété `scripts` dans le fichier `package.json` et exécuter la commande `npm start` dans votre terminal :

```json
"scripts": {
    "start": "nodemon index.ts"
  },
```

Avec `nodemon` vous n’avez pas besoin d’arrêter votre projet. Il redémarre automatiquement lorsque que vous enregistrez vos changements.

🌐 Plus de détails : **[GitHub](https://github.com/remy/nodemon)**

## 3- tsx

La troisième solution est d’utiliser `tsx` . Pour cela vous devez installer ce package avec la commande suivante : 

```bash
npm i -D tsx
```

Puis ajouter l’entrée suivante sur la propriété `"scripts"` dans le fichier `package.json` et exécuter la commande `npm start` dans votre terminal :

```json
"scripts": {
    "start": "tsx watch index.ts"
  },
```

🌐 Plus de détails : [**GitHub**](https://github.com/esbuild-kit/tsx)

## 4- tsc-node-env

La dernière solution que j’ai trouvée, est d’utiliser le package `“tsc-node-env”` . Pour cela vous devez installer les packages suivants :

```json
npm i -D ts-node-dev @types/node typescript
```

Pour la surveillance de vos changements, vous devez ajouter l’entrée suivante pour la propriété `“scripts”` dans le fichier `package.json` et exécuter la commande `npm start` dans votre terminal :

```json
"scripts": {
    "start": "tsnd --respawn index.ts"
  },
```

🌐 Plus de détails : **[GitHub](https://github.com/wclr/ts-node-dev)**