javascript - funciones de ES6 que no se compilan en TypeScript
Soy nuevo en TypeScript y estoy teniendo algunos problemas para compilar código es6.
Tengo un archivo .ts:
let a: number[] = [1,34,5,5,34,3];
console.log(a.find(no => no == 5));
Cuando ejecuto tsc --module es6 --target es2015 src/test.ts se compila bien, sin embargo tsc --module es6 --target es5 src/test.ts parece no funcionar. Me gustaría apuntar a es5, pero al hacerlo me da el siguiente error:
Property 'find' does not exist on type 'number[]'.
¿No puede TypeScript compilar a es5, o necesitaré ejecutar Babel encima del compilador de TypeScript?
Respuesta #1
Typescript puede compilar a es5, el único problema es que el método find está definido en el estándar es2015, por lo que typescript asumirá que no existirá.
Typescript tiene dos maneras de controlar a qué estándar se compila: target, que le dice al compilador cómo compilar la sintaxis, y lib, que le dice al compilador cómo es el entorno de ejecución (ver aquí para una respuesta más detallada con ejemplos)
Para apuntar a es5 pero obtener el método find, también necesitas especificar la biblioteca:
tsc --module es6 --target es5 src/test.ts --lib es2015,dom,scripthost
Tenga en cuenta que TypeScript no proporcionará polyfills, usted debe traer los suyos propios o esperar que find exista en el tiempo de ejecución.
