Saltar al contenido principal

Advertencias

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Polyfills

Para que ciertas características funcionen, requieren polyfills específicos. Puedes satisfacer todos los requisitos de características de Babel usando un polyfill completo como core-js/actual o (si prefieres cargarlo mediante una etiqueta <script>) core-js-bundle.

Alternativamente, puedes incluir selectivamente solo lo necesario:

FeatureRequirements
Array destructuring, For OfSymbol, prototype[Symbol.iterator]
SpreadArray.from

Si estás compilando generadores o funciones asíncronas a ES5, y usas una versión de @babel/core o @babel/plugin-transform-regenerator anterior a 7.18.0, también debes cargar el paquete regenerator runtime. Se carga automáticamente al usar la opción useBuiltIns: "usage" de @babel/preset-env o @babel/plugin-transform-runtime.

Built-ins

Babel asume que los built-ins (ej. Array, WeakMap y otros), si tienen polyfills, están modificados de manera compatible con la especificación.

Clases

Las clases built-in como Date, Array, DOM etc. no pueden subclasificarse correctamente debido a limitaciones de ES5 (para el plugin transform-classes). Puedes intentar usar babel-plugin-transform-builtin-extend basado en Object.setPrototypeOf y Reflect.construct, pero también tiene limitaciones.

ES5

Como Babel asume que tu código se ejecutará en un entorno ES5, utiliza funciones ES5. Si usas un entorno con soporte limitado o nulo para ES5 (como versiones antiguas de IE), usar @babel/polyfill añadirá soporte para estos métodos.

Internet Explorer

Clases (10 e inferiores)

Al heredar de una clase, las propiedades estáticas se heredan mediante __proto__, soporte ampliamente disponible pero que puede fallar en navegadores muy antiguos.

NOTA: __proto__ no es compatible en IE ≤ 10, por lo que las propiedades estáticas no se heredarán. Consulta protoToAssign para una posible solución.

En clases que usan super, la superclase no se resolverá correctamente. Puedes solucionarlo activando la opción loose en el plugin transform-classes.

Getters/setters (8 e inferiores)

En IE8 Object.defineProperty solo funciona en objetos DOM. Esto es problemático porque se requiere para definir getters y setters. Por ello, si planeas soportar IE8 o inferior, no se recomienda usar getters ni setters.

Referencia: MDN.

Módulos

Por defecto, al usar módulos con Babel se exporta una propiedad no enumerable __esModule mediante Object.defineProperty, incompatible con IE8 e inferiores. Una solución es activar la opción loose en tu plugin de módulos correspondiente.