Aller au-delà des fondamentaux de JavaScript est essentiel pour développer des applications Web robustes et maintenables. Cette formation avancée, alignée sur ES2024 et ES2025, vous apprend à maîtriser les classes ES2022+ avec private fields, static blocks et decorators, la programmation fonctionnelle moderne avec iterator helpers et immutables Array/Set methods, la gestion asynchrone avancée — Promises, AbortController, Streams — la Temporal API et l’outillage actuel — Vite, ESLint/Biome, Vitest, Playwright. Vous découvrirez aussi les runtimes serveur Node.js, Deno et Bun, et le processus TC39 pour anticiper les évolutions du langage.
Public visé
Développeurs, architectes et chefs de projets techniques.
Objectifs pédagogiques
À l’issue de cette formation, vous serez capable de :
- Maîtriser les fonctionnalités modernes de JavaScript jusqu’à ES2025
- Structurer un projet en ES Modules natifs et amorcer la migration vers TypeScript
- Concevoir un code objet et fonctionnel idiomatique — classes ES2022+, iterator helpers
- Implémenter des traitements asynchrones robustes — Promises avancées,
AbortController, Streams - Exploiter les APIs Web modernes en JavaScript —
fetch, stockage, Workers, Temporal - Mettre en place une chaîne d’outillage moderne — Vite, ESLint/Biome, Vitest, Playwright
- Comparer les runtimes serveur — Node.js, Deno, Bun
- Suivre l’évolution du langage via le processus TC39
Programme
Jour 1 - Matin
Le langage JavaScript moderne
Pièges du langage à connaître
- comprendre les conversions implicites —
==vs=== - maîtriser le hoisting et les zones de mort temporelles
- distinguer les contextes de
thisselon arrow, méthode et événement - éviter les fuites globales et les surprises de portée
Travaux pratiques :
- Auditer un module legacy et corriger ses points fragiles
ES Modules natifs
- déclarer et exporter — named exports, default export, re-exports
- consommer un module avec alias et JSON imports
- charger dynamiquement avec
import()et top-levelawait - gérer l’interop avec CommonJS
Travaux pratiques :
- Transformer un projet
require()en ES Modules avec import dynamique d’un panneau d’admin
TypeScript — introduction
- comprendre l’apport du typage progressif sur un projet JS existant
- déclarer des types — unions, intersections, génériques
- typer une API publique avec
interfaceettype - intégrer TypeScript dans un build existant
- adopter une approche progressive — JSDoc,
.d.ts, migration partielle
Travaux pratiques :
- Ajouter une couche de types à un module JS existant via JSDoc puis migrer un fichier en
.ts
Jour 1 - Après-midi
Programmation objet et fonctionnelle modernes
Classes modernes — ES2022+
- déclarer une classe avec ses méthodes et accesseurs
- encapsuler avec les private fields préfixés par
# - exploiter les static blocks pour l’initialisation
- comprendre les decorators en Stage 3+
- comparer classes et prototypes pour expliquer le modèle d’héritage
Travaux pratiques :
- Refondre une hiérarchie basée sur prototypes en classes ES2022 avec champs privés
Programmation fonctionnelle moderne
- écrire des fonctions de premier ordre — arrow, IIFE, factories
- composer avec des higher-order functions
- maîtriser les closures pour l’encapsulation et l’état
- pratiquer la composition et le currying
Travaux pratiques :
- Implémenter un pipeline de transformation de données via composition fonctionnelle
Iterator helpers et collections — ES2025
- chaîner sur un itérateur avec les iterator helpers
- exploiter les nouvelles méthodes Set
- regrouper des données avec
Object.groupByetMap.groupBy - transformer sans muter avec les méthodes Array immutables
Travaux pratiques :
- Refondre un traitement basé sur
for/Array.fromen chaînes d’iterator helpers
Jour 2 - Matin
Asynchrone avancé
Event loop et concurrence
- distinguer microtasks et macrotasks
- comprendre le rendu,
requestAnimationFrame,requestIdleCallback - repérer les blocages du thread principal
Travaux pratiques :
- Tracer l’exécution d’un code asynchrone dans le profiler DevTools et identifier les blocages
Promises avancées
- composer des variantes de Promise pour le parallélisme
- gérer les erreurs agrégées avec
AggregateError - découpler création et résolution avec
Promise.withResolversarrivé en ES2024 - chaîner
Error causeapparu en ES2022 pour le diagnostic
Travaux pratiques :
- Implémenter une fonction de retry avec timeout, annulation et erreurs chaînées
async / await et patterns
- structurer un code asynchrone lisible
- éviter les anti-patterns sequential vs parallel
- gérer les erreurs avec
try/catchetfinally
Travaux pratiques :
- Convertir une chaîne complexe de
.thenenasync/awaiten préservant le parallélisme
AbortController et annulation
- créer un
AbortController, propager le signal - annuler une requête
fetchou un timer - gérer la composition de signaux —
AbortSignal.any,AbortSignal.timeout
Travaux pratiques :
- Implémenter une recherche typeahead avec annulation des requêtes obsolètes
Streams API
- consommer un flux avec
ReadableStream - transformer en flux avec
TransformStream - produire un flux avec
WritableStream - relier streams et
fetchpour traiter de gros volumes
Travaux pratiques :
- Décompresser un fichier volumineux à la volée via
TransformStreamsans charger la totalité en mémoire
Jour 2 - Après-midi
APIs Web côté JavaScript
fetch moderne
- composer une requête avec différents types de body
- consommer une réponse en texte, JSON ou streaming
- annuler avec
AbortController, gérer les timeouts - traiter CORS et les credentials
Travaux pratiques :
- Construire un client HTTP générique avec retry, timeout, annulation et streaming
Stockage côté navigateur
- choisir l’API adaptée — Web Storage, IndexedDB, Cache API, File System Access
- modéliser des données dans IndexedDB avec object stores et transactions
- accéder au système de fichiers utilisateur via File System Access API
- mesurer les quotas avec Storage Estimate API
Travaux pratiques :
- Implémenter un cache local persistant typé via IndexedDB avec migration de schéma
Workers — Web, Service et Shared
- déléguer un calcul lourd à un Web Worker via
postMessageet Transferable Objects - bâtir un pattern requête/réponse avec
MessageChannel - introduire les Service Workers et leurs stratégies de cache
- partager un état avec
SharedArrayBufferet Atomics
Travaux pratiques :
- Déporter un traitement coûteux dans un Worker dédié et orchestrer plusieurs Workers
Temporal API — Stage 3, en finalisation
- comprendre les défauts du type
Datehistorique - modéliser des dates et durées avec les types Temporal
- formater et parser sans ambiguïté
- planifier la migration depuis
Datevers Temporal
Travaux pratiques :
- Réécrire des opérations de date critiques sur fuseaux et calcul de durées avec Temporal
Jour 3 - Matin
Outillage et qualité
Build moderne
- comparer les outils — Vite, esbuild, swc, Rollup, Webpack
- comprendre le bundling, le tree-shaking et les source maps
- configurer un projet Vite
- distinguer dev server et build de production
Travaux pratiques :
- Initialiser un projet Vite, configurer les chemins d’alias et observer le tree-shaking
Linters et formateurs
- positionner les outils — ESLint, Biome, oxlint, Prettier
- intégrer un linter à l’IDE et à la CI
- configurer un ruleset adapté au projet et à TypeScript
Travaux pratiques :
- Intégrer Biome — ou ESLint avec Prettier — à un projet existant et l’ajouter à la CI
Tests
- choisir un framework — Vitest ou Jest pour l’unitaire, Playwright pour l’end-to-end
- structurer une suite avec fixtures et mocks
- couvrir les opérations asynchrones, les
fetchet les timers - mesurer la couverture et l’exploiter sans fétichisme
Travaux pratiques :
- Écrire une suite Vitest pour un module métier puis un scénario Playwright sur l’UI associée
DevTools avancés
- exploiter le debugger avec breakpoints conditionnels
- profiler la performance — flame chart, long tasks
- inspecter la mémoire avec heap snapshot
- diagnostiquer les fuites mémoire
Travaux pratiques :
- Profiler une page lente, identifier le hotspot et appliquer une correction mesurable
Jour 3 - Après-midi
Runtimes serveur, évolutions et perspectives
JavaScript côté serveur
- positionner Node.js comme référence historique
- découvrir Deno — runtime sécurisé par défaut, TypeScript natif
- découvrir Bun — runtime tout-en-un
- comparer perfs, écosystème et compatibilité ESM/CJS
Travaux pratiques :
- Exécuter un même module HTTP minimal sous Node.js, Deno et Bun, comparer le démarrage et l’ergonomie
Architecture client / serveur en JavaScript
- partager du code entre client et serveur — code isomorphe, conditional exports
- communiquer en JSON, en streaming ou via WebSocket
- comprendre les frontières serveur full-stack et l’hydratation
Travaux pratiques :
- Exposer une API REST minimale avec annulation côté client et streaming côté serveur
Évolutions récentes du langage
- récapituler ES2024 alias ES15 —
Object.groupBy,Promise.withResolvers,Atomics.waitAsync, regex flagv - récapituler ES2025 alias ES16 — iterator helpers, Set methods, JSON modules,
Promise.try,Float16Array - anticiper ES2026 alias ES17 — proposals en finalisation
Travaux pratiques :
- Intégrer trois apports ES2024 ou ES2025 dans un module existant et expliciter le gain
Processus TC39 et perspectives
- comprendre les stages 0 à 4 du TC39
- suivre les proposals d’intérêt — Decorators, Pipeline operator, Records and Tuples, Type Annotations
- évaluer la maturité d’une feature avant de l’adopter
Travaux pratiques :
- Projet final : présenter une analyse sur trois proposals TC39 d’intérêt pour le projet de l’apprenant
Modalités d’évaluation des acquis
En cours de formation, par des études de cas ou des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation.
Pour aller plus loin
Cette formation donne accès aux formations suivantes :
Voir aussi
Vous serez peut-être intéressés par les formations suivantes :
- JavaScript - Les fondamentaux
- JavaScript - ECMAScript 6 à 16 - Les nouveautés
- JavaScript - Librairie jQuery - Initiation
- JavaScript - Librairie jQuery - Avancé
- JavaScript - Librairie D3.js - Initiation
Formation DEV-JS-200 — JavaScript - Avancé. Domaine : Développement. Niveau : Intermédiaire. Durée : 3 jours (21 heures). Mots-clés : javascript, es2025, typescript, classes, iterator helpers, promises, abortcontroller, streams, temporal, vite, vitest, deno, bun, développement, avancé. Cylian Formation, Dijon.