【发布时间】:2016-05-10 03:29:20
【问题描述】:
我想在现有的 Babel 项目中开始使用 Typescript。我的目标是能够将打字稿添加到构建过程中,而对现有代码的修改尽可能少。出于这个原因,我决定链接 typescript(针对 ES2015)和 Babel。
有了 ts1.8 的 js 文件支持,我想我终于可以保持一切原样,然后一个一个地转换文件。
但这是我遇到的第一个问题:error TS8003: 'export=' can only be used in a .ts file.
Typescript 不允许 es2015 导出语法:export default 'foo';.
我们使用 es2015 语法进行导入/导出,我不想为旧的 commonJS 符号更改它。有没有办法让打字稿允许它?
这是一个演示问题的最小示例:
hello.js
export default (name) => console.log(`Hello ${name}`);
tsconfig.json
{
"version": "1.8",
"compilerOptions": {
"module": "es2015",
"allowJs": true,
"target": "es2015"
}
}
命令行(使用 typescript 1.8)
tsc --outDir ../out
结果
hello.js(1,1): error TS8003: 'export=' can only be used in a .ts file.
【问题讨论】:
-
似乎有点混乱。
export default 'foo';用于导出。然后你必须使用相关语法导入:import foo from "./jsfile"; -
无论如何看这里例如语法github.com/Microsoft/TypeScript/issues/2242
-
当然,我知道。我将编辑我的问题以避免混淆
-
上次我检查我确定 typescript 允许 ES6 模块语法。我从 npm 安装了 typescript@next,但最后一个版本也应该可以工作。它到底给了你什么错误?
-
@Zorgatone 汤姆的问题的重点是有很多他不想更改的 .js 文件。他正在使用新的
allowJs标志。
标签: javascript typescript ecmascript-6 babeljs typescript1.8