TypeScript 命名空间

TypeScript 命名空间

命名空间一个最明确的目的就是解决重名问题。

命名空间定义了标识符的可见范围,一个标识符可在多个命名空间中定义,在不同命名空间中的同一个标识是互不相干的。

namesapce

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