Estoy revisando un código base antiguo que era ES5, aunque lo estoy limpiando para que la versión mínima admitida sea ES2015. Habiendo revisado las bibliotecas, hay muchos polyfills incluidos de core-js que necesito desenredar.
¿Cómo averiguo qué características pertenecen a qué especificación para poder saber qué polyfills están fuera de mi especificación de destino?
Por ejemplo, inmediatamente hay uno para Array.includes .
Al hacer referencia a los documentos de MDN para Array.includes , encuentro un enlace a la especificación ; sin embargo, la especificación parece ser un documento ES2022 completo y al mirar el enlace, no estoy seguro de en qué punto se agregó includes . En este caso, sé que es ; sin embargo, si miro la lista significativa de polirrellenos, no sabré eso para todas las entradas que se polirrellenen.ES2015
¿Cómo puedo saber qué hay en ES2015 en lugar de qué hay en ES2016 y superior?
Hay algunas maneras:
La introducción al borrador de especificación del editor en versiones recientes tiene algunos párrafos que describen qué se agregó en qué versión. Por ejemplo:
ES2016 también incluyó soporte para un nuevo operador de exponenciación y agrega un nuevo método a Array.prototype llamado include.
(no es el mejor ejemplo porque el trabajo en ES2016 consistió principalmente en mejoras de herramientas de proceso y especificación y cosas importantes que no iban a estar listas a tiempo para el corte anual, por lo que no se agregó mucho al lenguaje para la biblioteca estándar)
y
ECMAScript 2017 introdujo funciones asíncronas, memoria compartida y atómica junto con mejoras de lenguaje y biblioteca más pequeñas, correcciones de errores y actualizaciones editoriales. Las funciones asíncronas mejoran la experiencia de programación asíncrona al proporcionar sintaxis para las funciones de devolución de promesas. Shared Memory and Atomics presenta un nuevo modelo de memoria que permite que los programas multiagente se comuniquen mediante operaciones atómicas que garantizan un orden de ejecución bien definido incluso en CPU paralelas. También incluyó nuevos métodos estáticos en Object: Object.values, Object.entries y Object.getOwnPropertyDescriptors.
La página de propuestas finalizadas le indica a qué versión de la propuesta finalizada de especificación se agregó (o se agregará, en caso de que se agreguen a la siguiente instantánea de especificación). Por ejemplo:
Propuesta Autor campeones Notas de la reunión del TC39 Año de publicación esperado Array.prototype.includesdomenic denicola domenic denicola
Rick Waldronnoviembre 2015 2016
Puede ver la especificación ES2015 aquí para saber qué contiene.