命名空间

随着项目结构变大,代码中可能出现重复函数名、变量名互相覆盖的问题,这可以用命名空间和模块解决。

实际上,只用模块其实已经可以较好的解决这个问题了,但是TypeScript额外引入了命名空间的概念,可以将代码划分的更细致。TypeScript中,命名空间的用法和C#很像。

定义命名空间

下面代码在命名空间userManagement中定义和类User

namespace userManagement {
    // 需要在命名空间外调用的类、接口等,需要用export声明
    export class User {
        username:string;
        password:string;

        constructor(username: string, password: string) {
            this.username = username;
            this.password = password;
        }
    }
}

let user:userManagement.User = new userManagement.User('Tom', 'abc123');
console.log(user);

引用命名空间中的内容时,使用命名空间.类名就可以了。

此外,命名空间是支持嵌套的:

namespace BusinessService {
    export namespace UserManagement {
        // 需要在命名空间外调用的类、接口,需要用export声明
        export class User {
            username:string;
            password:string;

            constructor(username: string, password: string) {
                this.username = username;
                this.password = password;
            }
        }
    }
}

let user:BusinessService.UserManagement.User = new BusinessService.UserManagement.User('Tom', 'abc123');
console.log(user);
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap