Vai al contenuto principale

Avvertenze

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Polyfill

Per funzionare correttamente, alcune funzionalità richiedono specifici polyfill. Puoi soddisfare tutti i requisiti di Babel utilizzando un polyfill completo come core-js/actual oppure (se preferisci caricarlo via <script>) core-js-bundle.

In alternativa puoi includere selettivamente solo ciò che ti serve:

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

Se stai compilando generatori o funzioni asincrone in ES5 e utilizzi una versione di @babel/core o @babel/plugin-transform-regenerator precedente alla 7.18.0, devi caricare anche il pacchetto regenerator runtime. Viene caricato automaticamente quando usi l'opzione useBuiltIns: "usage" di @babel/preset-env o @babel/plugin-transform-runtime.

Funzioni integrate

Babel presuppone che le funzioni integrate (es. Array, WeakMap e altre), se polyfillate, siano modificate in modo conforme alle specifiche.

Classi

Le classi integrate come Date, Array, DOM ecc. non possono essere estese correttamente a causa di limitazioni in ES5 (per il plugin transform-classes). Puoi provare a usare babel-plugin-transform-builtin-extend basato su Object.setPrototypeOf e Reflect.construct, ma presenta anch'esso alcune limitazioni.

ES5

Poiché Babel presuppone che il tuo codice venga eseguito in un ambiente ES5, utilizza funzioni ES5. Se usi un ambiente con supporto limitato o assente per ES5 (come vecchie versioni di IE), l'utilizzo di @babel/polyfill aggiungerà il supporto per questi metodi.

Internet Explorer

Classi (10 e precedenti)

Quando erediti da una classe, le proprietà statiche vengono ereditate tramite __proto__. Questo comportamento è ampiamente supportato, ma potresti incontrare problemi con browser molto vecchi.

NOTA: __proto__ non è supportato in IE ≤ 10, quindi le proprietà statiche non verranno ereditate. Consulta protoToAssign per una possibile soluzione alternativa.

Per le classi che utilizzano super, la superclasse non verrà risolta correttamente. Puoi risolvere abilitando l'opzione loose nel plugin transform-classes.

Getter/setter (8 e precedenti)

In IE8 Object.defineProperty può essere utilizzato solo su oggetti DOM. Ciò è problematico poiché è necessario per impostare getter e setter. Pertanto, se intendi supportare IE8 o versioni precedenti, l'uso di getter e setter non è raccomandato.

Riferimento: MDN.

Moduli

Per impostazione predefinita, quando si utilizzano moduli con Babel viene esportata una proprietà non enumerabile __esModule. Ciò avviene tramite Object.defineProperty, non supportato in IE8 e versioni precedenti. Una soluzione alternativa è abilitare l'opzione loose nel plugin dei moduli corrispondente.