9.命名空间与模块

命名空间:
在大型项目中,为了避免各种变量名的冲突,是可以将相似功能的函数,类,接口等放入到命名空间(内部模块)中

TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”
命名空间: 侧重于组织代码,避免冲突
模块: 侧重代码复用, 并且一个模块中可以出现多个命名空间

定义命名空间

export namespace A {
    // 抛出变量
    export const a:number = 1;

    // 抛出类
    export class Dog {
        aname:string;
        constructor(n:string) {
            this.aname = n;
        }
        eat() {
            console.log(`${this.aname}喜欢吃饭`)
        }
    }
}

// 使用命名空间
let kele = new A.Dog('可乐');
let hg = new B.Dog('火锅');

kele.eat();
hg.eat();

模块化

将命名空间放入模块文件中然后抛出

// >modules/Animal.ts

```export namespace A {
    // 抛出变量
    export const a:number = 1;

    // 抛出类
    export class Dog {
        aname:string;
        constructor(n:string) {
            this.aname = n;
        }
        eat() {
            console.log(`${this.aname}喜欢吃饭`)
        }
    }
}

export namespace B {
    export const a:string = 'str';

    export class Dog {
        aname:string;
        constructor(n:string) {
            this.aname = n;
        }
        eat() {
            console.log(`${this.aname}喜欢吃狗粮`)
        }
    }
}

引入到其他文件中

// > 某文件

import {A, B} from './module/Animal';

let kele = new A.Dog('可乐');
let hg = new B.Dog('火锅');

kele.eat();
hg.eat();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容