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