TypeScript中的命名空间和js中的模块化和后端语言中的命名空间差不多,都是为了创建一个独立的作用域,从而减少全局变量的污染。
例如下面的代码:
const user: string = 'root';const user: string = 'admin';
上面的代码就会出现错误。问题的原因就是在相同的作用域下出现了两个相同名字的变量。
这个时候就可以使用命名空间来解决这个问题。
例如:
namespace User {const user:string = 'admin';}namespace Player {const user: string = 'root';}
上面的代码中相当于创建了两个独立的作用域,此时两个变量分别处于两个独立的作用域当中,此时也就不再会出现命名冲突,变量污染的问题。但是此时想要在作用域之外使用变量是有问题的,想要顺利的使用变量,就需要先将变量导出,才能使用变量。
例如:
namespace User {export const user: string = 'admin';}namespace Player {export const user: string = 'root';}// 使用作用域中的变量console.log(User.user); // adminconsole.log(Player.user);// root
