Browserify with typescript modules - 什么是最佳设计实践?

Browserify with typescript modules - what are best design practices?

我有一个 browserify javascript 项目,我在其中包含带有 require 语句的模块。我现在正在添加一些打字稿,当我简单地 require 编译的 javascript 时它工作正常。

但是 typescript 也有自己的 module 语句。这与 browserify/node 的模块有什么关系?我应该同时使用两者吗?这似乎是多余的。应该使用哪种类型的模块,在什么情况下使用? 谢谢

在较新版本的 TypeScript (1.5) 中,module 已弃用,取而代之的是 namespace 关键字。关键字用于创建内部模块 - 允许您在内部组织代码。

所以现在更明显的是它们是不同的东西。 TypeScript 仍然提供创建 browserify/node 模块的能力——外部模块。为此,您可以使用 ES6 module syntax 或更早的 TypeScript 语法。然后使用browserify插件(如tsify)构建更方便

可以找到更多关于 TypeScript 模块和命名空间的文档here(也描述了旧的外部模块语法)

应该使用哪种类型的模块取决于开发人员的项目和品味。如果你的目标是 Node.js,那么使用 CommonJS 模块是值得的(恕我直言,TS 中的 ES6 语法并将其转换为 CommonJS)。如果您正在使用 browserify,那么使用外部模块也是合理的。建议命名空间仅在一个文件内使用 - 因此内部模块。