javascript - Svelte stöder endast es6+-syntax. Ställ in din 'compilerOptions.target' på 'es6' eller högre


Jag har använt Svelte, TypeScript och Rollup (låter TypeScript hantera transpileringen) för att rikta in mig på ES7. Nu börjar jag ett nytt projekt och behöver rikta in mig på ES5.

Det första jag har lagt märke till är att allt transpileras men komponenterna är fortfarande klasser. Jag hade inga skript i komponenterna vid den tidpunkten. När jag lade till ett script-tag i .svelte-filen fick jag omedelbart felet:

Svelte stöder endast es6+-syntax. Ställ in din 'compilerOptions.target' till 'es6' eller högre

Jag förstår att jag behöver ställa TS-målet till ES6/ES7 och installera Rollup Babel-plugin för att hantera transpilering till ES5. Men varför skulle vanlig TypeScript-transpilering inte fungera? Varför bryr sig Svelte om TypeScript-målet? Man skulle tro att Svelte-filer konverteras till TS innan de transpileras till ES5, men det verkar vara tvärtom.

Svar #1

Svelte-kompilatorn arbetar på JS, alla andra språk förbehandlas för att omvandlas till JS, annars skulle Svelte-kompilatorn behöva hantera många olika språk. Dessutom kan du inte bara göra JS till TS, TS har mer information än JS, det finns inget sätt att få tillbaka den informationen.

Om ditt slutresultat ska vara ES5 behöver du förmodligen en flerstegs-pipeline:

TS => JS 6+ =Svelte=> JS 6+ => JS 5

Relaterade artiklar