命名空间一个最明确的目的就是解决重名问题。
命名空间定义了标识符的可见范围,一个标识符可在多个命名空间中定义,在不同命名空间中的同一个标识是互不相干的。
TypeScript 中命名空间使用 namespace 来定义,语法格式如下:
namespace 空间名称{
export interface ISomeInterfaceName { }
export class SomeClassName { }
}
1 创建如下目录结构 :
|_ 项目目录
|_ SpaceA\
|_ dog.ts
|_ SpaceB\
|_ dog.ts
|_ animal.ts
|_ test.ts
2 animal.ts 源码
interface Animal{
eat():void;
}
3 SpaceA/dog.ts 源码
/// <reference path = "../animal.ts" />
namespace SpaceA {
export class Dog implements Animal{
eat():void{
console.log("SpaceA dog eat ...");
}
}
}
4 SpaceB/dog.ts 源码
/// <reference path = "../animal.ts" />
namespace SpaceB {
export class Dog implements Animal{
eat():void{
console.log("SpaceB dog eat ...");
}
}
}
5 test.ts 源码
/// <reference path = "./SpaceA/dog.ts" />
/// <reference path = "./SpaceB/dog.ts" />
var dogA = new SpaceA.Dog();
dogA.eat();
var dogB = new SpaceB.Dog();
dogB.eat();
将多个空间编译为一个 js 文件
tsc --outFile app.js .\test.ts
运行查看结果
node .\app.js