javascript - es6-funksjoner kompilres ikke i TypeScript


Jeg er ny på TypeScript og har litt problemer med å kompilere es6-kode.

Jeg har en .ts-fil:

let a: number[] = [1,34,5,5,34,3];

console.log(a.find(no => no == 5));

Når jeg kjører tsc --module es6 --target es2015 src/test.ts kompilert det fint, men tsc --module es6 --target es5 src/test.ts ser ikke ut til å fungere? Jeg vil gjerne målrette mot es5, men når jeg gjør det får jeg feilen:

Property 'find' does not exist on type 'number[]'.

Kan ikke TypeScript kompilere til es5, eller vil jeg måtte kjøre babel på toppen av TypeScript-kompilatoren?

Svar #1

Typescript kan kompilere til es5, det eneste problemet er at find-metoden er definert i es2015-standarden, så typescript vil anta at den ikke vil eksistere.

Typescript har to måter å kontrollere hvilken standard du kompilerer til på: target som forteller kompilatoren hvordan syntaksen skal kompileres, og lib som forteller kompilatoren hvordan kjøretidsmiljøet ser ut (se her for mer detaljert svar med eksempler)

For å målrette es5 men få find-metoden, må du også spesifisere lib:

tsc --module es6 --target es5 src/test.ts --lib es2015,dom,scripthost

Merk at TypeScript ikke vil tilby noen polyfyller, du må enten ta med dine egne eller håpe at find finnes i kjøretiden.

Relaterte artikler