我正在尝试使用ES6模块解析将一个Typescript项目编译为JS,但似乎有些不对劲.
我的tsconfig.json看起来像这样:
{
"compilerOptions": {
"module": "es6",
"target": "es6",
"sourceMap": true,
"lib": ["es6"]
}
}
Run Code Online (Sandbox Code Playgroud)
我用两个模块构建了一个简单的测试用例.第一个模块(module1.ts)只导出一个常量:
export const testText = "It works!";
Run Code Online (Sandbox Code Playgroud)
第二个模块(main.ts)只是从第一个模块导入导出:
import { testText } from 'module1';
alert(testText);
Run Code Online (Sandbox Code Playgroud)
第二个模块(main.js)的输出文件包含在我的index.html中,带有type="module"-Attribute:
<script src="main.js" type="module"></script>
Run Code Online (Sandbox Code Playgroud)
当我使用Firefox(dom.moduleScripts.enabled在about:config中设置)和Chrome Canary(实验Web平台标志设置)进行测试时.在这两种情况下它都不起作用.
Typescript编译器似乎将TS import { testText } from 'module1';语句转换为JS语句import { testText } from 'module1';.(注意:两者完全一样)
正确的ES6 import语句将是:(
import { testText } from 'module1.js';
注意.js文件扩展名)如果我手动将文件扩展名添加到生成的代码中,它就可以工作.
我做错了什么或者Typescript "module": "es6"设置不正常吗?有没有办法以这样的方式配置tsc:.js文件扩展名被添加到生成的import语句中?