ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # 命名空间 ~~~ 1.命名空间一个最明确的目的就是解决重名问题。本质上来说也是针对模块化,使用的是对象的形式解决 模块化让其各自独立不互相影响 ~~~ >[danger] ##### namespace 使用 ~~~ 1.通过第二个案例可以看出如果不'export ' 导出的话是转译后是不会变成对象属性 ~~~ ~~~ namespace Shapes { export namespace Polygons { export class Triangle {} export class Squaire {} } } namespace Shapes1 { const a = 1 } namespace Shapes2 { export const a = 1 } ~~~ * 'npx tsc --outDir dist' 编译后结果 ~~~ var Shapes; (function (Shapes) { var Polygons; (function (Polygons) { var Triangle = /** @class */ (function () { function Triangle() { } return Triangle; }()); Polygons.Triangle = Triangle; var Squaire = /** @class */ (function () { function Squaire() { } return Squaire; }()); Polygons.Squaire = Squaire; })(Polygons = Shapes.Polygons || (Shapes.Polygons = {})); })(Shapes || (Shapes = {})); var Shapes1; (function (Shapes1) { var a = 1; })(Shapes1 || (Shapes1 = {})); var Shapes2; (function (Shapes2) { Shapes2.a = 1; })(Shapes2 || (Shapes2 = {})); ~~~ >[danger] ##### 导出命名空间的内容 ~~~ 1.导出话使用'///' 后面接着'<reference path="地址"/> ' 举个例子:/// <reference path="地址"/> ~~~ ~~~ // index.ts namespace Shapes { export namespace Polygons { export class Triangle {} export class Squaire {} } } namespace Shapes1 { const a = 1 } namespace Shapes2 { export const a = 1 } // index1.ts /// <reference path="./index.ts"/> Shapes2 ~~~ * 打包后使用指令npx tsc --outFile dist/a.js src/index1.ts ~~~ 1.将整个'index.ts' 文件定义变量全部导入 ~~~ ![](https://img.kancloud.cn/a3/5e/a35e8fc0131ae1959edcb41fcf04b9c2_882x702.png) >[info] ## 命名空间的用处 ~~~ 1.命名空间在现代TS开发中的重要性并不高,主要原因是ES6引入了模块系统,文件即模块的方式使得开发者能更好的得组织代 码,但是命名空间并非一无是处,通常在一些非 TypeScript 原生代码的 .d.ts 文件中使用,主要是由于 ES Module 过于静态, 对 JavaScript 代码结构的表达能力有限。 因此在正常的TS项目开发过程中并不建议用命名空间 ~~~