TypeScript中的namespace与module有何区别
在TypeScript中,namespace和module都可以用来组织代码和避免命名冲突,但它们有一些重要的区别:
- namespace:
- namespace是在TypeScript中用来组织代码的一种方式,它类似于在JavaScript中的对象字面量。
- namespace中的代码会被包裹在一个命名空间中,不会污染全局命名空间。
- 可以使用namespace关键字来定义一个命名空间,然后在命名空间中定义变量、函数、类等。
- 可以使用///
来引用其他命名空间的代码。 - 通过编译后会将命名空间转换为一个IIFE(立即调用函数表达式)。
- module:
- module是在TypeScript中用来组织代码并导入导出模块的一种方式,类似于ES6中的模块。
- module可以使用export和import关键字来导出和导入变量、函数、类等。
- module可以定义一个模块,并在其他文件中使用import关键字来引入模块。
- 可以使用namespace关键字来定义一个命名空间,然后在命名空间中定义变量、函数、类等。
- 可以使用///
来引用其他命名空间的代码。 - 通过编译后会将模块转换为CommonJS、AMD、UMD等模块系统。