命名空间
命名空间:namespace:模块化
为什么要使用命名空间
class userName{constructor(){console.log('我是userName');}}class userPwd{constructor(){console.log('我是userInfo');}}class userInfo{constructor(){new userName()new userPwd()}}new userInfo()
如上ts代码所示,编译成js代码如下,userName、userPwd、userInfo编译成js文件后都是全局变量,全局变量容易出现命名冲突,污染全局等缺点,因此namespace命名空间就是解决这一问题的。
"use strict";class userName {constructor() {console.log('我是userName');}}class userPwd {constructor() {console.log('我是userInfo');}}class userInfo {constructor() {new userName();new userPwd();}}new userInfo();
语法格式
namespace 名称{
export 在改作用域外边的方法|属性
namespace 名称{
变量名称也可以套
}
}
namespace user {export class userName{constructor(){console.log('我是userName');}}export class userPwd{constructor(){console.log('我是userInfo');}}}class userInfo{constructor(){new user.userName()new user.userPwd()}}new userInfo()
"use strict";var user;(function (user) {class userName {constructor() {console.log('我是userName');}}user.userName = userName;class userPwd {constructor() {console.log('我是userInfo');}}user.userPwd = userPwd;})(user || (user = {}));class userInfo {constructor() {new user.userName();new user.userPwd();}}new userInfo();
如上js代码,namespace命名空间的作用相当于把类userName、userPwd定义在了立即执行函数作用域内,给变量了一个作用域,避免全局污染和重复命名。
export
///
