TypeScript 和 ES 模块 - 我还需要 rollup/webpack 吗?

use*_*757 5 visual-studio typescript ecmascript-6 webpack rollupjs

我有一个旧的 TypeScript Web 应用程序,它通过 HTML 页面上的脚本包含引用所有内容,因此所有内容都在全局命名空间中声明。TypeScript 代码使用 TypeScript 的模块 -

myclass.ts:

module MyModule {
  export class MyClass {
 }
}
Run Code Online (Sandbox Code Playgroud)

其他文件.ts

let myInstance = new MyModule.MyClass(); // globally available
Run Code Online (Sandbox Code Playgroud)

所有 TypeScript 都使用 tsconfig.json 中的“outFile”写入单个文件,这可能会对全局变量和写入顺序产生问题。

我使用 Visual Studio,它内置了 TypeScript 支持。当您构建解决方案时,它会构建 TypeScript。

我想更新代码以使用现代 ES6 模块:

myclass.ts:

export class MyClass {
}
Run Code Online (Sandbox Code Playgroud)

其他文件.ts

import { MyClass } from "./myclass";
let myInstance = new MyClass(); 
Run Code Online (Sandbox Code Playgroud)

我最初以为我需要使用第三方库(例如 webpack 或 rollup)来完成这项工作,但是查看 TypeScript 编译器生成的 JavaScript,看起来应该可以继续使用“outFile” - 一切都已包装在模块中,因此不应全局可用:

Object.defineProperty(exports, "__esModule", { value: true });
var MyClass = /** @class */ (function () { ..}());
exports.MyClass = MyClass;
Run Code Online (Sandbox Code Playgroud)

如果我要使用 rollup 或 webpack,我会有点困惑这将如何与运行自己的 tsc 进程的 Visual Studio 一起工作 - 大多数示例似乎都适合使用 npm typescript 编译器的 VS Code。

无论如何,我错过了什么吗?有什么原因我不能跳过使用 webpack 或 rollup 吗?