Búsqueda de sitios web

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.

Artículos relacionados