>[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项目开发过程中并不建议用命名空间
~~~
- TypeSprict -- 了解
- TS-- 搭建(一)webpack版本
- TS -- 搭建(二)直接使用
- TS -- 基本类型
- ts -- 类型推导和字面量类型
- ts -- 类型扩展和类型缩小
- ts -- any场景
- ts -- 使用unknown 还是 any
- ts -- any/never/unknown
- ts -- 断言
- ts -- 类型大小写疑惑
- ts -- 数组类型 [] 还是泛型疑惑
- TS -- 枚举
- 外部枚举
- TS -- 函数
- ts -- 重载作用
- ts -- 05 this is
- 解构
- TS -- 接口
- 绕过接口的多余参数检查
- Interface 与 Type 的区别
- TS -- 类
- ts -- 类作为类型
- TS -- 交叉和联合 类型
- ts -- 交叉类型
- ts -- 联合类型
- ts -- 交叉和联合优先级
- ts -- 类型缩减
- TS -- 什么是泛型
- ts -- 泛型函数表达式/函数别名/接口
- ts -- 泛型类
- ts -- extends 泛型约束
- ts -- 泛型new
- ts -- Ts的泛型
- TS -- 缩小类型详解类型守卫
- TS -- 类型兼容性
- TS -- 命名空间与模块化
- ts -- 模块化
- ts -- 命名空间
- TS -- 工具方法
- Record -- 一组属性 K(类型 T)
- Exclude -- 从联合类型中去除指定的类
- Extract -- 联合类型交集
- NonNullable -- 从联合类型中去除 null 或者 undefined
- Partial -- 将所有属性变为可选
- Required -- 所有属性变为必填
- Readonly -- 所有属性只读
- Pick -- 类型中选取出指定的键值
- Omit -- 去除指定的键值