Node.js avec TypeScript
Qu'est-ce que TypeScript
TypeScript est un langage open-source maintenu et développé par Microsoft. Il est apprécié et utilisé par de nombreux développeurs de logiciels à travers le monde.
Essentiellement, c'est un sur-ensemble de JavaScript qui ajoute de nouvelles fonctionnalités au langage. L'ajout le plus notable est la définition de types statiques, quelque chose qui n'est pas présent dans JavaScript pur. Grâce aux types, il est possible, par exemple, de déclarer le type d'arguments attendus et ce qui est retourné exactement dans nos fonctions, ou la forme exacte de l'objet que nous créons. TypeScript est un outil vraiment puissant et ouvre un nouveau monde de possibilités dans les projets JavaScript. Il rend notre code plus sûr et plus robuste en empêchant de nombreuses erreurs avant même que le code ne soit déployé - il détecte les problèmes pendant le développement du code et s'intègre parfaitement aux éditeurs de code comme Visual Studio Code.
Nous pourrons discuter d'autres avantages de TypeScript plus tard, voyons maintenant quelques exemples !
Exemples
Jetez un œil à cet extrait de code, puis nous pourrons le décomposer ensemble :
type User = {
name: string
age: number
}
function isAdult(user: User): boolean {
return user.age >= 18
}
const justine: User = {
name: 'Justine',
age: 23,
}
const isJustineAnAdult: boolean = isAdult(justine)
La première partie (avec le mot clé type
) est responsable de la déclaration de notre type d'objet personnalisé représentant les utilisateurs. Plus tard, nous utilisons ce type nouvellement créé pour créer la fonction isAdult
qui accepte un argument de type User
et retourne un boolean
. Après cela, nous créons justine
, nos données d'exemple qui peuvent être utilisées pour appeler la fonction définie précédemment. Enfin, nous créons une nouvelle variable contenant des informations sur le fait que justine
est majeure ou non.
Il y a d'autres choses à savoir sur cet exemple. Premièrement, si nous ne respections pas les types déclarés, TypeScript nous alerterait qu'il y a un problème et empêcherait toute mauvaise utilisation. Deuxièmement, tout ne doit pas être typé explicitement - TypeScript est très intelligent et peut déduire les types pour nous. Par exemple, la variable isJustineAnAdult
serait de type booléen même si nous ne la typions pas explicitement, ou justine
serait un argument valide pour notre fonction même si nous n'avions pas déclaré cette variable comme étant de type User
.
Bon, nous avons donc du code TypeScript. Maintenant, comment l'exécuter ?
La première chose à faire est d'installer TypeScript dans notre projet :
npm install -D typescript
Maintenant, nous pouvons le compiler en JavaScript en utilisant la commande tsc
dans le terminal. Faisons-le !
En supposant que notre fichier s'appelle example.ts
, la commande ressemblerait à :
npx tsc example.ts
TIP
npx ici signifie Node Package Execute. Cet outil nous permet d'exécuter le compilateur TypeScript sans l'installer globalement.
tsc
est le compilateur TypeScript qui prendra notre code TypeScript et le compilera en JavaScript. Cette commande entraînera la création d'un nouveau fichier nommé example.js
que nous pouvons exécuter à l'aide de Node.js. Maintenant que nous savons comment compiler et exécuter le code TypeScript, voyons les capacités de prévention des bogues de TypeScript en action !
Voici comment nous allons modifier notre code :
type User = {
name: string
age: number
}
function isAdult(user: User): boolean {
return user.age >= 18
}
const justine: User = {
name: 'Justine',
age: 'Secret!',
}
const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!")
Et voici ce que TypeScript a à dire à ce sujet :
example.ts:12:5 - error TS2322: Type 'string' is not assignable to type 'number'.
12 age: 'Secret!',
~~~
example.ts:3:5
3 age: number;
~~~
Le type attendu provient de la propriété 'age' qui est déclarée ici sur le type 'User'
example.ts:15:7 - error TS2322: Type 'boolean' is not assignable to type 'string'.
15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
~~~~~~~~~~~~~~~~
example.ts:15:51 - error TS2554: Expected 1 arguments, but got 2.
15 const isJustineAnAdult: string = isAdult(justine, "I shouldn't be here!");
~~~~~~~~~~~~~~~~~~~~~~
Found 3 errors in the same file, starting at: example.ts:12
Comme vous pouvez le voir, TypeScript nous empêche avec succès de déployer du code qui pourrait fonctionner de manière inattendue. C'est merveilleux !
En savoir plus sur TypeScript
TypeScript offre une multitude d'autres mécanismes intéressants comme les interfaces, les classes, les types utilitaires, etc. De plus, sur les projets plus importants, vous pouvez déclarer la configuration de votre compilateur TypeScript dans un fichier séparé et ajuster finement son fonctionnement, sa rigueur et l'emplacement où il stocke les fichiers compilés, par exemple. Vous pouvez en apprendre plus sur toutes ces fonctionnalités impressionnantes dans la documentation officielle de TypeScript.
Parmi les autres avantages de TypeScript qui valent la peine d'être mentionnés, on peut citer le fait qu'il peut être adopté progressivement, qu'il contribue à rendre le code plus lisible et compréhensible et qu'il permet aux développeurs d'utiliser les fonctionnalités modernes du langage tout en déployant du code pour les anciennes versions de Node.js.
Exécution de code TypeScript dans Node.js
Node.js ne peut pas exécuter TypeScript nativement. Vous ne pouvez pas appeler node example.ts
directement depuis la ligne de commande. Mais il existe trois solutions à ce problème :
Compilation de TypeScript en JavaScript
Si vous souhaitez exécuter du code TypeScript dans Node.js, vous devez d'abord le compiler en JavaScript. Vous pouvez le faire en utilisant le compilateur TypeScript tsc
comme indiqué précédemment.
Voici un petit exemple :
npx tsc example.ts
node example.js
Exécution de code TypeScript avec ts-node
Vous pouvez utiliser ts-node pour exécuter du code TypeScript directement dans Node.js sans avoir besoin de le compiler au préalable. Mais il ne vérifie pas le typage de votre code. Nous recommandons donc de vérifier d'abord le typage de votre code avec tsc
, puis de l'exécuter avec ts-node
avant de le déployer.
Pour utiliser ts-node
, vous devez d'abord l'installer :
npm install -D ts-node
Vous pouvez ensuite exécuter votre code TypeScript comme ceci :
npx ts-node example.ts
Exécution de code TypeScript avec tsx
Vous pouvez utiliser tsx pour exécuter du code TypeScript directement dans Node.js sans avoir besoin de le compiler au préalable. Mais il ne vérifie pas le typage de votre code. Nous recommandons donc de vérifier d'abord le typage de votre code avec tsc
, puis de l'exécuter avec tsx
avant de le déployer.
Pour utiliser tsx, vous devez d'abord l'installer :
npm install -D tsx
Vous pouvez ensuite exécuter votre code TypeScript comme ceci :
npx tsx example.ts
Si vous souhaitez utiliser tsx
via node
, vous pouvez enregistrer tsx
via --import
:
node --import=tsx example.ts
TypeScript dans le monde Node.js
TypeScript est bien établi dans le monde Node.js et utilisé par de nombreuses entreprises, projets open-source, outils et frameworks. Voici quelques exemples notables de projets open-source utilisant TypeScript :
- NestJS - framework robuste et complet qui facilite la création de systèmes évolutifs et bien architecturés
- TypeORM - excellent ORM influencé par d'autres outils bien connus d'autres langages comme Hibernate, Doctrine ou Entity Framework
- Prisma - ORM de nouvelle génération avec un modèle de données déclaratif, des migrations générées et des requêtes de base de données entièrement typées
- RxJS - bibliothèque largement utilisée pour la programmation réactive
- AdonisJS - Un framework web complet avec Node.js
- FoalTs - Le framework Nodejs élégant
Et beaucoup, beaucoup d'autres grands projets… Peut-être même votre prochain !