2020年11月12日

ts-命名空间

作者 rourou

命名空间:避免各种变量命名冲突,将相似的功能的函数、类、接口等放置到命名空间中。命名空间内通过export暴露。通过namespace 关键字包裹。

命名空间和模块的区别:

命名空间:内部模块,主要用于组织戴拿,避免命名冲突

模块:ts的外部模块的简称,侧重代码的复用,一个模块中可以有多个命名空间

namespace A{
  interface c{
    name:string;
    age:number;
  }
  export class getData implements c{
    name:string;
    age:number;
    constructor(n:string,a:number){
      this.name = n;
      this.age = a;
    }
    export get():string{
      return this.name+this.age
    }
  }
}
var getDataName = new A.getData('张3',2)
console.log(getDataName.get())

我们把A命名空间分割成多个文件。 尽管是不同的文件,它们仍是同一个命名空间,并且在使用的时候就如同它们在一个文件中定义的一样。

简化命名空间操作的方法是使用import q = x.y.z给常用的对象起一个短的名字

namespace Shapes {
    export namespace Polygons {
        export class Triangle { }
        export class Square { }
    }
}

import polygons = Shapes.Polygons;
let sq = new polygons.Square(); // Same as "new Shapes.Polygons.Square()"