命名空间和模块不要混用,不要在一个模块中使用命名空间,命名空间最好在一个全局的环境中使用
namespace Shape {
const pi = Math.PI
export function cricle(r: number) {
return pi * r ** 2
}
}
namespace中可以定义任意多的变量,这些变量只能在shape下可见,如果要在全局内可见的话就要使用export关键字,将其导出.
本质上是闭包,用来隔离作用域。
ts保留了这种方式,但是在我们平时的模块化开发中,也没必要使用命名空间。
如果在一个js中的namespace过于庞大,可以写多个js文件,他们共享同一个命名空间
互相引用的时候 /// <reference path = "a.ts" >
访问:
Shape.cricle()
起别名:import cricle = Shape.cricle()