TS-namespace(命名空间)#记录

一、命名空间

1、ts 中的 “命名空间” 就是之前的 “内部模块”,任何使用 module 关键字来声明一个内部模块的地方都应该使用 namespace 关键字来替换。

// ts 中的“内部模块” (废弃)
module X {   }

// ts 中的“命名空间” (推荐)
namespace X {   }

2、export 关键字

使用 export 关键字修饰需要在命名空间之外访问的成员如:接口和类

// a.ts
namespace Shape {
    export interface Person{
        name:string
        age:number
    }
}

3、一个命名空间可以在多个文件中共享

//b.ts

namespace Shape {
    export interface Zoom{
        name:string
        age:number
    }
}

4、三斜线指令

用于声明文件之间的依赖关系,仅可放在包含它的文件最顶端,三斜线指令的前面只能出现单行或多行注释;如果出现在一个语句或声明之后,就会被当作普通的单行注释,并且不具有特殊的含义。

//方法一:
/// <reference path="a.ts" />
//方法二:
//import './a'

const people:Shape.Person = {
    name:'张三',
    age:18
}


console.log(people) // {name:'张三',age:18}

5、别名

可以给常使用的对象起一个短的名字,方便自己使用

namespace ShapeA{
    export namespace ShapeB{
        export class Person{...}
        export class Zoom{...}
    }
}

//如果我们要使用Person这个类我们需要
new ShapeA.ShapeB.Person()

//但是上述代码有点太长了,我们可以使用 import 简化代码:

import shape = ShapeA.ShapeB

new shape.Person()

6、多文件的命名空间

// a.ts
namespace A {
  export interface IA {
    name: string;
    do(): void;
  }
}

// b.ts

/// <reference path="a.ts" />

namespace B {
  export class IB implements A.IA {
    name: string;
    constructor(newName: string){
      this.name = newName
    }
    do() {
      console.log(`${this.name}:做些什么`);
    }
  }
}

//index.ts
import { B } b from "./b";

const bInstance = new B.IB("B");
bInstance.do(); // 输出:B:做些什么

二、合并命名空间

1、命名空间中导出的成员是不可以重复定义的

// a.ts 

namespace Shape {
  const aa = 111;

  export function aaFuc() {
    console.log(aa)
  }
}


// b.ts

namespace Shape {
  const bb = 222;

  export function aaFuc() {
    console.log(bb)
  }
}

2、合并命名空间和函数(注意:命名空间与函数或者类合并时,必须要放在函数或者类的后面,否则会报错)

function A() {}

namespace A{
  export let strA = 'aaa';
}

console.log(A.strA);  // aaa

3、合并命名空间和类(相当于给类添加了静态属性)

class B {}

namespace B{
  export let bb= 'bbb';
}

console.log(B.bb);  // bbb

4、合并枚举(合并命名空间与枚举,相对于给枚举添加了属性。)

// 注意命名空间与枚举的位置
namespace Color {
  export function mix() {}
}

enum Color {
  Red,
  Green,
  Blue
}

console.log(Color);

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值