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.
Fondamentalement, c'est un sur-ensemble de JavaScript qui ajoute de nouvelles capacités au langage. L'ajout le plus notable est la définition statique des types, ce qui n'est pas présent en JavaScript pur. Grâce aux types, il est possible, par exemple, de déclarer quel type d'arguments nous attendons et ce qui est retourné exactement dans nos fonctions ou quelle est la forme exacte de l'objet que nous créons. TypeScript est un outil très puissant et ouvre un nouveau monde de possibilités dans les projets JavaScript. Il rend notre code plus sûr et plus robuste en prévenant de nombreux bugs 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 merveilleusement avec les éditeurs de code comme Visual Studio Code.
Nous pourrons parler des autres avantages de TypeScript plus tard, voyons quelques exemples maintenant !
Exemples
Jetez un coup d'œil à cet extrait de code, puis nous pourrons le décortiquer 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 renvoie 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 avec des informations indiquant si justine
est un adulte.
Il y a d'autres choses à savoir sur cet exemple. Premièrement, si nous ne nous conformions pas aux types déclarés, TypeScript nous alerterait que quelque chose ne va pas 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 l'avions pas typée 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
.
D'accord, 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
Nous pouvons maintenant le compiler en JavaScript à l'aide de la commande tsc
dans le terminal. Faisons-le !
En supposant que notre fichier est nommé example.ts
, la commande ressemblerait à :
npx tsc example.ts
TIP
npx signifie ici 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 créera un nouveau fichier nommé example.js
que nous pourrons exécuter à l'aide de Node.js. Maintenant que nous savons comment compiler et exécuter du 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;
~~~
The expected type comes from property 'age' which is declared here on 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 constater, TypeScript nous empêche avec succès de livrer du code qui pourrait fonctionner de manière inattendue. C'est merveilleux !
En savoir plus sur TypeScript
TypeScript offre de nombreux autres mécanismes intéressants tels que les interfaces, les classes, les types utilitaires, etc. De plus, sur des projets plus importants, vous pouvez déclarer votre configuration de compilateur TypeScript dans un fichier séparé et ajuster de manière granulaire son fonctionnement, son niveau de striction et l'endroit où il stocke les fichiers compilés par exemple. Vous pouvez en savoir plus sur tout cela dans la documentation officielle de TypeScript.
Certains des autres avantages de TypeScript qui méritent d'être mentionnés sont 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 des fonctionnalités linguistiques modernes tout en expédiant du code pour des versions plus anciennes de Node.js.
Exécuter du 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 :
Compiler TypeScript en JavaScript
Si vous voulez 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écuter du 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 les types de votre code. Nous vous recommandons donc de vérifier d'abord les types de votre code avec tsc
, puis de l'exécuter avec ts-node
avant de le livrer.
Pour utiliser ts-node
, vous devez d'abord l'installer :
npm install -D ts-node
``
Ensuite, vous pouvez exécuter votre code TypeScript comme ceci :
```bash
npx ts-node example.ts
Exécuter du 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 les types de votre code. Nous vous recommandons donc de vérifier d'abord les types de votre code avec tsc
, puis de l'exécuter avec tsx
avant de le livrer.
Pour utiliser tsx, vous devez d'abord l'installer :
npm install -D tsx
Ensuite, vous pouvez exécuter votre code TypeScript comme ceci :
npx tsx example.ts
Si vous voulez 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 est 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 rend la création de systèmes évolutifs et bien architecturés facile et agréable
- 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 doté d'un modèle de données déclaratif, de migrations générées et de 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 !