我一直在使用 Svelte、TypeScript 和 Rollup(让 TypeScript 处理转译)来定位 ES7。现在我正在开始一个新项目,需要以 ES5 为目标。
我注意到的第一件事是一切都被转译了,但组件仍然是类。那时我的组件中没有任何脚本。将脚本标签添加到 .svelte 文件后,我立即收到错误消息:
Svelte only supports es6+ syntax. Set your 'compilerOptions.target' to 'es6' or higher
我知道我需要将 TS 目标设置为 ES6/ES7 并安装 Rollup Babel 插件来处理转译为 ES5。但是为什么普通的 TypeScript 转换不起作用呢?为什么 Svelte 关心 TypeScript 目标?您会认为 Svelte 文件在转译为 ES5 之前会先转换为 TS,但似乎反过来呢?
最佳答案
Svelte 编译器在 JS 上运行,任何其他语言都是 pre-processed转换成 JS,否则 Svelte 编译器将不得不处理许多不同的语言。另外,你不能把 JS 变成 TS,TS 比 JS 有更多的信息,没有办法取回这些信息。
如果你的最终结果应该是 ES5,你可能需要一个多步骤的 pileline:
TS => JS 6+ =Svelte=> JS 6+ => JS 5
关于javascript - Svelte 仅支持 es6+ 语法。将您的 'compilerOptions.target' 设置为 'es6' 或更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72168054/