Svelte 仅支持 es6+ 语法。将 'compilerOptions.target' 设置为 'es6' 或更高
Svelte only supports es6+ syntax. Set your 'compilerOptions.target' to 'es6' or higher
我一直在使用 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有更多的信息,没办法取回这些信息
如果你的 end-result 应该是 ES5,你可能需要一个 multi-step pileline:
TS => JS 6+ =Svelte=> JS 6+ => JS 5
我一直在使用 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有更多的信息,没办法取回这些信息
如果你的 end-result 应该是 ES5,你可能需要一个 multi-step pileline:
TS => JS 6+ =Svelte=> JS 6+ => JS 5