命名空間:
在大型項(xiàng)目中,為了避免各種變量名的沖突,是可以將相似功能的函數(shù),類,接口等放入到命名空間(內(nèi)部模塊)中
TypeScript 1.5里術(shù)語名已經(jīng)發(fā)生了變化。 “內(nèi)部模塊”現(xiàn)在稱做“命名空間”。 “外部模塊”現(xiàn)在則簡(jiǎn)稱為“模塊”
命名空間: 側(cè)重于組織代碼,避免沖突
模塊: 側(cè)重代碼復(fù)用, 并且一個(gè)模塊中可以出現(xiàn)多個(gè)命名空間
定義命名空間
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();