javascript - ¿Es TypeScript 100% compatible con IE9? - si no, ¿avisará qué no se puede hacer mientras codificas?
¿TypeScript siempre transpila el código (ES6->ES5) a algo adecuado para IE9? Si es así, ¿puede proporcionar evidencia ya que no puedo encontrar nada que diga categóricamente que todo el código ES6 válido se transpilará para funcionar en IE9? (Varias fuentes sugieren que puede, pero no está claro si eso es algo general o un sí completo, simplemente funciona)
Si no, ¿advierte o da errores al decir que no se puede usar la función X? Por ejemplo, veo en el sitio de Babel (https://babeljs.io/docs/learn-es2015/) que no puede transpilar ni aplicar polyfill a los Proxies, así que supongo que si no puede convertir un Proxy en código válido anterior a ES6, entonces TypeScript tendrá el mismo problema?
De nuevo, si miro https://kangax.github.io/compat-table/es6/ y digo abrir "Destructuring, declarations" entonces muestra a Babel con 21/22 y a TS con solo 15/22. ¿Significa esto que TS no puede trabajar con tanto como Babel? Si uso TS, ¿me advertirá si intento usar dicha sintaxis?
Respuesta #1
El código JavaScript generado por el compilador TypeScript no necesita una biblioteca en tiempo de ejecución. Esta es una decisión de diseño.
En la mejora de ES6, dos cosas:
- Nueva sintaxis de ES6;
- Nueva API de ES6.
La nueva sintaxis de ES6 como class, funciones flecha, const, let, for of se convierte bien a ES3, el código generado se ejecutará en IE8.
TypeScript no proporciona ninguna API. Algunas API de ES6 se pueden polyfill: Promise, Array.from, etc. Por lo tanto, podemos usar TypeScript con es6-shim, por ejemplo.
Algunas API, como Proxy, no se pueden rellenar polifílicamente en absoluto.
¿Advierte o da errores al decir que no se puede usar la función X?
Sí, pero en comparación con ES3 o ES5 en lugar de IE8 o IE9.
Todavía tienes que conocer tus navegadores objetivo.