首页 > 其他 > 详细

TypeScript 命名空间-Namespace

时间:2021-01-11 11:57:34      阅读:23      评论:0      收藏:0      [点我收藏+]

TypeScript 通过 tsc 编译成 JavaScript 时,用的是 var 全局变量,var 用多了会造成全局变量污染,为了解决这个问题,使用命名空间。

# 生成 package.json 文件
npm init -y
# 生成 tsconfig.json文件
tsc -init

命名空间

namespace Home {
  class Header {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Header";
      document.body.appendChild(elem);
    }
  }

  class Content {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Content";
      document.body.appendChild(elem);
    }
  }

  class Footer {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Footer";
      document.body.appendChild(elem);
    }
  }

  export class Page {
    constructor() {
      new Header();
      new Content();
      new Footer();
    }
  }
}

使用:

new Home.Page();

只能通过 Home 访问 Page,其他变量无法访问,避免了全局变量的污染。
这就是 TypeScript 给我们提供的类似模块化开发的语法,它的好处就是让全局变量减少了很多,实现了基本的封装,减少了全局变量的污染。

多命名空间(组件化)

namespace Components {
  export class Header {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Header";
      document.body.appendChild(elem);
    }
  }

  export class Content {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Content";
      document.body.appendChild(elem);
    }
  }

  export class Footer {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Footer";
      document.body.appendChild(elem);
    }
  }
}
namespace Home {
  export class Page {
    constructor() {
      new Components.Header();
      new Components.Content();
      new Components.Footer();
    }
  }
}

为了便利,需要把这两个 ts 文件编译输出成一个 js 文件,参考:TypeScript 多个文件编译成一个 js 文件

子命名空间


namespace Components {
  export namespace SubComponents {
    export class Test {}
  }

  //someting ...
}

相关文章:
TypeScript 多个文件编译成一个 js 文件
参考:
技术胖——TypeScript从入门到精通(22. 初识命名空间-Namespace)
技术胖——TypeScript从入门到精通(23. 深入命名空间-Namespace)

TypeScript 命名空间-Namespace

原文:https://www.cnblogs.com/xch-jiang/p/14260159.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!