TypeScript中的命名空间和js中的模块化和后端语言中的命名空间差不多,都是为了创建一个独立的作用域,从而减少全局变量的污染。

    例如下面的代码:

    1. const user: string = 'root';
    2. const user: string = 'admin';

    上面的代码就会出现错误。问题的原因就是在相同的作用域下出现了两个相同名字的变量。

    这个时候就可以使用命名空间来解决这个问题。

    例如:

    1. namespace User {
    2. const user:string = 'admin';
    3. }
    4. namespace Player {
    5. const user: string = 'root';
    6. }

    上面的代码中相当于创建了两个独立的作用域,此时两个变量分别处于两个独立的作用域当中,此时也就不再会出现命名冲突,变量污染的问题。但是此时想要在作用域之外使用变量是有问题的,想要顺利的使用变量,就需要先将变量导出,才能使用变量。

    例如:

    1. namespace User {
    2. export const user: string = 'admin';
    3. }
    4. namespace Player {
    5. export const user: string = 'root';
    6. }
    7. // 使用作用域中的变量
    8. console.log(User.user); // admin
    9. console.log(Player.user);// root