Así que estaba empezando un nuevo proyecto de TypeScript y me preguntaba qué versión de JavaScript / ECMA Script debería tener como objetivo. Actualmente podemos elegir entre ES5, ES2015, ES2016, ES2017 y ES2018!
Las dos cosas principales a tener en cuenta al seleccionar su versión de destino de JavaScript son:
- Entorno de destino – ¿Navegador de escritorio? ¿Móvil? NodeJS?
- ¿Qué características JS necesito – Clases? ¿Módulos? ¿Funciones asíncronas?
Tenemos la suerte de estar en la era del Navegador Evergreen, por lo que el soporte para las últimas características es muy bueno en la mayoría de los entornos, sin embargo, siempre hay situaciones en las que los usuarios tienen dispositivos más antiguos, o estás atascado en una versión antigua de NodeJS.
Por esta razón, mi recomendación general es apuntar a la versión más antigua que tiene las características que necesitas. Esto dará un buen equilibrio entre el amplio soporte del entorno de destino y el acceso a nuevas características impresionantes 🙂
Abajo he resumido lo que veo como las principales nuevas características liberadas en cada versión de ECMA Script. Para una lista completa, así como los detalles completos de la compatibilidad con el entorno de destino, echa un vistazo a la impresionante tabla de compatibilidad de Kangax.
ES5 (2009)
- Esta es la versión de referencia de JS que generalmente se puede asumir que todos los tiempos de ejecución (¡excepto los realmente antiguos!) serán compatibles.
ES6 / ES2015
- Módulos estándar –
import
yexport
- Promesas estandarizadas
- Clases &Inherencia
- Bloqueo-variables de ámbito –
let
yconst
- Template Literals
- Destrucción de objetos en variables
- Funciones generadoras
- Estructuras de datos Map y Set
- Internacionalización para Strings, Números y Fechas mediante
Intl
API
ES7 / ES2016
- Array.includes()
- Operador de exponente numérico (potencia de)
**
ES8 / ES2017
- Funciones asíncronas
- Object.entries
- Funciones de relleno de cadenas
ES9 / ES2018
- Descanso/extensión de objetos
const obj = { ...props };
- Iteración asíncrona
for await (...) {
- Función de promesa
finally()
- Mejoras de expresiones regulares (lookbehind, grupos con nombre)