客户端中的Typescript模块-最好的方法是什么?

时间:2020-05-17 15:50:17

标签: javascript typescript es6-modules

我正在构建一个Web应用程序。 我在客户端使用打字稿,在服务器端使用golang。 我使用打字稿3.9.2。

我想将.ts文件编译为.js,并使用模块。 默认编译将其编译为 CommonJS 模块加载器。 然后在浏览器的第二行中有一些exports.__...。 我搜索了一下,它从根本上说它想要一个叫做export的变量,而我没有。在这种情况下,我不喜欢在其他脚本标签中定义模拟导出的主要解决方案。

我将compilerOption更改为"module":"ES6" 然后编译并加载良好(将脚本的类型更改为模块后),但是浏览器找不到我要导入的模块。

代码如下:

use.ts

import * as fun from 'funcs'
let bar =  fun.foo()

funcs.ts

export function foo() :boolean{
return true;
}

use.js

import * as fun from 'funcs'
var bar =  fun.foo()

funcs.js

export function foo(){
return true;
}

现在,浏览器找不到/funcs所需的use.js。当我手动将use.js中的第一行更改为

import * as fun from 'funcs.js'

有效。

我该怎么做才能使一切自动化? 这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

ES模块导入需要具有.js扩展名,但是Typescript的模块没有,并且现在似乎没有内置的选项可以自动添加它们,但是有人确实写了{{3} },即可将扩展名添加到导入中,也可以手动将其添加到导入中。

在TypeScript Github上有一些a script关于此问题和相关问题。他们正在考虑为浏览器的编译器添加模块解析选项。