天天看點

Typescript學習系列---《命名空間》

 命名空間

在代碼量較大的情況下,為了避免各種變量命名相沖突,可将相似功能的函數、類、接口等放置到命名空間。

同Java包、.net命名空間一樣,TypeScript的命名空間可以将代碼包裹起來,隻對外暴露需要在外部通路的對象。

  • 命名空間:内部子產品,主要用于組織代碼,避免命名沖突。
  • 子產品: ts的外部子產品的簡稱,側重代碼的複用,一個子產品裡可能會有多個命名空間。
namespace A { // 命名空間A是私有的
    interface Animal {
        name: String;
        eat(): void
    }
    
    export class Dog implements Animal { // 外部需要使用Dog,通過export暴露
        name: String;
        constructor(theName: string) {
            this.name = theName;
        }
    
        eat() {
            console.log('`${this.name}吃狗糧。');
        }
    }
    class Cat implements Animal {
        name: String;
        constructor(theName: string) {
            this.name = theName;
        }
        eat() {
            console.log('`${this.name}吃貓糧。');
        }
    }
}      
namespace B { // 命名空間B是私有的
    interface Animal {
        name: String;
        eat(): void
    }
    
    export class Dog implements Animal { // 外部需要使用Dog,通過export暴露
        name: String;
        constructor(theName: string) {
            this.name = theName;
        }
    
        eat() {
            console.log('`${this.name}吃狗糧。');
        }
    }
    class Cat implements Animal {
        name: String;
        constructor(theName: string) {
            this.name = theName;
        }
        eat() {
            console.log('`${this.name}吃貓糧。');
        }
    }
}      
import { A, B } from './modules/animal'
var d = new A.Dog('Duoduo');
d.eat();
var d2 = new B.Dog('Duoduo');
d2.eat();      

繼續閱讀