Skip to content

1. Introduction

Le PDF du document est |ICI|.

Les codes du document sont |ICI|.

Ce document est un produit de l’IA Claude d’Anthropic. Il a pour vocation de transposer le document : [Introduction au langage Python 3 et au framework web Flask par l’exemple ] de deux manières :

  • le langage Python 3 est remplacé par le langage TypeScript 6 ;
  • le framework web Flask en Python est remplacé par le framework web NestJS ;

L’IA Claude d’Anthropic a fait l’essentiel du travail (90%) :

  • génération des codes. On est partis des codes déjà écrits du cours “Introduction au langage ECMASCRIPT 6 par l’exemple”. Puis j’ai demandé à Claude d’élargir les scripts du cours à la gestion des bases de données puis à la réalisation d’un service web avec le framework NestJS ;
  • génération du cours au format ODT. Là également, on est partis de l’ODT du cours “Introduction au langage ECMASCRIPT 6 par l’exemple”. Puis j’ai demandé à Claude d’y inclure tous les nouveaux scripts qu’il avait créés et de les commenter.

Mon travail a consisté en deux choses :

  • tester les codes ;
  • réviser le document ODT. J’y ai notamment ajouté des copies d’écran pour aider le lecteur ;

Serge Tahé, septembre 2026

==

Le langage ECMAScript a beaucoup évolué depuis 2019 : ECMAScript est passé par les éditions 2020 à 2026, et un langage compagnon, [TypeScript], s'est imposé comme la façon la plus sûre d'écrire du JavaScript à grande échelle. Cette réécriture suit fidèlement le plan et la pédagogie du document original “Introduction au langage ECMASCRIPT 6 par l’exemple” — un script, son code, son explication ligne par ligne, son exécution — mais :

  • tous les scripts sont désormais écrits en [TypeScript] plutôt qu'en JavaScript pur ;
  • les explications portent, en plus de la syntaxe du langage, sur les types et sur les différences avec JavaScript ;
  • de nouveaux chapitres ont été ajoutés pour couvrir les nouveautés apparues entre 2020 et 2026 : chaînage optionnel, classes à champs privés, top-level await, Object.groupBy, Array.fromAsync, et les tout derniers ajouts d'ECMAScript 2026 (Math.sumPrecise, Iterator.concat, Error.isError...) ;
  • un chapitre est consacré à [Temporal], le successeur moderne de l'objet Date ;
  • les captures d'écran d'exécution VSCode du document original ont été remplacées par le résultat réellement exécuté et vérifié de chaque script, avec tsx sur Node.js 26.

Comme le document original, celui-ci fait référence à un serveur de calcul de l'impôt écrit en PHP 7 (cf. le cours « Introduction au langage PHP7 par l'exemple »). Les derniers chapitres construisent, en TypeScript, un client de ce serveur — d'abord une application console, structurée en couches [UI, métier, dao], puis un client fonctionnant dans un navigateur avec [webpack].

Ce document nécessite une lecture active : pour comprendre un script, il faut à la fois lire son code, ses commentaires, et le résultat réel de son exécution.

1.1. Public visé et prérequis

Ce document s'adresse à des débutants en TypeScript, mais qui connaissent déjà les bases de la programmation (variables, boucles, fonctions, structures conditionnelles) dans un autre langage. Aucune connaissance préalable de JavaScript ou de TypeScript n'est nécessaire.

1.2. Organisation du projet d'exemples

Tous les scripts présentés dans ce document appartiennent à un unique projet VSCode — le dossier typescript-fondamentaux/ de l’arborescence complète décrite plus bas — organisé en un dossier par chapitre (bases, tableaux, objets, strings, regexp, fonctions, exceptions, modules, async, http, classes, nouveautes, ecmascript-2026, temporal, client impots). Chaque script y est un fichier .ts, exécutable directement avec la commande suivante, depuis la racine du projet :

npx tsx chemin/vers/le/script.ts
Astuce : les fichiers README.md de chaque dossier du projet reprennent, de façon condensée, le contenu pédagogique de ce document — ils peuvent servir d'aide-mémoire une fois le document lu.

Depuis les chapitres consacrés aux bases de données et à NestJS, ce projet ne se résume plus au seul dossier ci-dessus : il fait désormais partie d’une arborescence unique et plus large, qui regroupe la totalité des scripts présentés dans ce document — fondamentaux TypeScript, accès aux bases de données, mini-projets NestJS et étude de cas. C’est cette arborescence complète que le lecteur télécharge, et qu’un seul npm install, lancé à sa racine, installe en une seule fois, grâce aux [npm workspaces] :

cours-typescript-nestjs-scripts/
├── package.json
├── README.md
├── typescript-fondamentaux/
   ├── bases/  tableaux/  objets/  strings/  regexp/  fonctions/
   ├── exceptions/  modules/  async/  http/  classes/
   └── nouveautes/  ecmascript-2026/  temporal/  client impots/
├── typescript-bases-de-donnees/
   ├── sql/
   └── databases/  (mysql/  typeorm/  prisma/)
├── nestjs-cours/
   ├── hello-nest/
   ├── actions-reponse/
   ├── actions-modele/
   └── acces-donnees/  (pilote-natif/  typeorm/  prisma/)
└── nestjs-etude-de-cas/
    ├── src/  (actions/  config/  entities/  filters/  model/  responses/  session/  utilities/)
    └── views/

Le rôle de chacun de ces dossiers :

  • typescript-fondamentaux/ — les scripts des chapitres de langage (celui décrit ci-dessus : bases, tableaux, objets, fonctions, classes, async, exceptions, modules, nouveautés ECMAScript, [Temporal], puis le client du serveur de calcul de l’impôt) ;
  • typescript-bases-de-donnees/ — les trois chapitres sur l’accès aux bases de données : pilote natif mysql2, ORM TypeORM, ORM Prisma ;
  • nestjs-cours/ — les mini-projets NestJS des chapitres consacrés au framework : hello-nest (premier projet), actions-reponse, actions-modele, et les extraits acces-donnees illustrant NestJS combiné au pilote natif, à TypeORM et à Prisma ;
  • nestjs-etude-de-cas/ — le projet complet du chapitre « Étude de cas » : le portage en NestJS du serveur PHP de calcul de l’impôt.

Le fichier README.md de la racine reprend cette organisation ; comme indiqué plus haut, chaque sous-dossier garde en plus son propre README.md, avec ses instructions d’exécution spécifiques.