Ich habe also ein neues TypeScript-Projekt begonnen und frage mich, welche JavaScript- / ECMA-Script-Version ich anvisieren soll. Wir können derzeit zwischen ES5, ES2015, ES2016, ES2017 und ES2018 wählen!
Die beiden wichtigsten Dinge, die bei der Auswahl der JavaScript-Zielversion zu beachten sind:
- Zielumgebung – Desktop-Browser? Mobile? NodeJS?
- Welche JS-Funktionen benötige ich – Klassen? Module? Async-Funktionen?
Wir haben das Glück, im Zeitalter des Evergreen-Browsers zu leben, so dass die Unterstützung für die neuesten Funktionen in den meisten Umgebungen sehr gut ist. Es gibt jedoch immer wieder Situationen, in denen Benutzer ältere Geräte haben oder Sie auf einer älteren Version von NodeJS festsitzen.
Aus diesem Grund ist meine allgemeine Empfehlung, die älteste Version anzustreben, die die von Ihnen benötigten Funktionen hat. Dies bietet ein gutes Gleichgewicht zwischen einer breiten Unterstützung der Zielumgebung und dem Zugang zu fantastischen neuen Funktionen 🙂
Im Folgenden habe ich die meiner Meinung nach wichtigsten neuen Funktionen zusammengefasst, die in jeder ECMA Script-Version veröffentlicht wurden. Eine umfassende Liste sowie alle Details zur Unterstützung der Zielumgebungen finden Sie in der großartigen Kompatibilitätstabelle von Kangax.
ES5 (2009)
- Dies ist die Basisversion von JS, von der Sie im Allgemeinen annehmen können, dass alle Laufzeiten (außer wirklich alten!) sie unterstützen.
ES6 / ES2015
- Standardmodule –
import
undexport
- Standardisierte Promises
- Klassen &Vererbung
- Block-.scoped variables –
let
undconst
- Template Literals
- Object destructing into variables
- Generator functions
- Map and Set data structures
- Internationalisation for Strings, Zahlen und Daten über
Intl
API
ES7 / ES2016
- Array.includes()
- Numerischer Exponent (Potenz von) Operator
**
ES8 / ES2017
- Async Funktionen
- Object.entries
- String padding functions
ES9 / ES2018
- Object Rest/Spread
const obj = { ...props };
- Asynchronous Iteration
for await (...) {
- Promise
finally()
function - Regular expression enhancements (lookbehind, named groups)