Svelte 仅支持 es6+ 语法。将“compilerOptions.target”设置为“es6”或更高版本

Mac*_*zyk 5 javascript rollup transpiler typescript svelte

我一直在使用 Svelte、TypeScript 和 Rollup(让 TypeScript 处理转译)来针对 ES7。现在我正在开始一个新项目,需要以 ES5 为目标。

我注意到的第一件事是所有内容都被转译了,但组件仍然是类。那时我的组件中没有任何脚本。将脚本标签添加到 .svelte 文件后,我立即收到错误:

Svelte 仅支持 es6+ 语法。将“compilerOptions.target”设置为“es6”或更高版本

我知道我需要将 TS 目标设置为 ES6/ES7 并安装 Rollup Babel 插件来处理到 ES5 的转译。但为什么普通的 TypeScript 转译不起作用呢?为什么 Svelte 关心 TypeScript 目标?您可能认为 Svelte 文件在转译为 ES5 之前先转换为 TS,但似乎恰恰相反?

H.B*_*.B. 2

Svelte 编译器运行在 JS 上,任何其他语言都经过预处理才能转为 JS,否则 Svelte 编译器将不得不处理许多不同的语言。另外,你不能把JS变成TS,TS比JS有更多的信息,没有办法取回这些信息。

如果你的最终结果应该是 ES5,你可能需要一个多步骤的桩线:

TS => JS 6+ =Svelte=> JS 6+ => JS 5
Run Code Online (Sandbox Code Playgroud)