Je commençais donc un nouveau projet TypeScript et je me demandais quelle version de JavaScript / ECMA Script cibler. Nous pouvons actuellement choisir entre ES5, ES2015, ES2016, ES2017 et ES2018 !
Les deux éléments majeurs à prendre en compte lors du choix de votre version cible JavaScript sont :
- Environnement cible – Navigateur de bureau ? Mobile ? NodeJS?
- Quelles fonctionnalités JS ai-je besoin – Classes ? Modules ? Fonctions asynchrones?
Nous avons la chance d’être à l’ère du navigateur Evergreen, donc le support des dernières fonctionnalités est très bon dans la plupart des environnements, cependant il y a toujours des situations où les utilisateurs ont des appareils plus anciens, ou vous êtes coincé sur une ancienne version de NodeJS.
Pour cette raison, ma recommandation générale est de cibler la plus ancienne version qui a les fonctionnalités dont vous avez besoin. Cela donnera un bon équilibre entre le support d’un large environnement cible et l’accès à de nouvelles fonctionnalités impressionnantes 🙂
Ci-après, j’ai résumé ce que je vois comme les nouvelles fonctionnalités majeures publiées dans chaque version de ECMA Script. Pour une liste complète, ainsi que tous les détails sur le support de l’environnement cible, consultez l’impressionnante table de compatibilité de Kangax.
ES5 (2009)
- C’est la version de base de JS que vous pouvez généralement supposer que tous les run-times (sauf les vraiment vieux !) supporteront.
ES6 / ES2015
- Modules standard –
import
etexport
- Promesses standardisées
- Classes &Héritage
- Block-scoped variables –
let
etconst
- Template Literals
- Destruction d’objets en variables
- Fonctions génératrices
- Structures de données Map et Set
- Internationalisation des chaînes de caractères, nombres et dates via API
ES7 / ES2016
- Array.includes()
- Opérateur d’exposant numérique (puissance de)
**
ES8 / ES2017
- Fonctions asynchrones
- Objet.entries
- Fonctions de remplissage de chaîne de caractères
ES9 / ES2018
- Restauration d’objet/étalement
const obj = { ...props };
- Itération asynchrone
for await (...) {
- Fonction Promise
finally()
- Améliorations des expressions régulières (lookbehind, groupes nommés)
.