我有一个browserify javascript项目,其中包含带有require
语句的模块。我现在正在添加一些打字稿,当我只编译require
编译的javascript时,它工作正常。
但是,typescript也有自己的module
语句。这与browserify / node的模块有什么关系?我应该同时使用两者吗?这似乎是多余的。应该使用哪种类型的模块,以及在什么情况下?
感谢。
答案 0 :(得分:1)
在较新版本的TypeScript(1.5)中,不推荐module
使用namespace
关键字。该关键字用于创建内部模块 - 允许您在内部组织代码。
所以现在更明显的是那些是不同的东西。仍然TypeScript提供了创建browserify / node模块的能力 - 外部模块。为此,您可以使用ES6 module syntax或更早的TypeScript语法。然后使用browserify插件(例如tsify)进行更方便的构建。
可以找到有关TypeScript模块和命名空间的更多文档here(还描述了旧的外部模块语法)
应该使用哪种类型的模块取决于开发人员的项目和品味。如果您以Node.js为目标,则值得使用CommonJS模块(TS中的IMHO ES6语法并将其转换为CommonJS)。如果您使用的是browserify,那么使用外部模块也是合理的。建议命名空间仅在一个文件中使用 - 因此内部模块。