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

Typescript modules in client side - What is the best way?

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

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

我将 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;
}

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

import * as fun from 'funcs.js'

有效。

我该怎么做才能让一切都自动进行? 这里的最佳做法是什么?

ES 模块导入需要有 .js 扩展名,但 Typescript 的模块没有,现在似乎没有自动添加它们的内置选项,但有人写了 a script 将扩展添加到导入中,或者您可以手动将它们添加到导入中。

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