zoukankan      html  css  js  c++  java
  • typescript命名空间

    /*
    命名空间:
    
        在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数、类、接口等放置到命名空间内
    
        同Java的包、.Net的命名空间一样,TypeScript的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象。命名空间内的对象通过export关键字对外暴露。
    
    
    命名空间和模块的区别:
    
        命名空间:内部模块,主要用于组织代码,避免命名冲突。
    
        模    块:ts的外部模块的简称,侧重代码的复用,一个模块里可能会有多个命名空间。
    
    */
    
    
    namespace A{
        interface Animal {
            name: string;
            eat(): void;
        }
        export class Dog implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃狗粮。`);
            }
        }
    
        export class Cat implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 吃猫粮。`);
            }
        }   
    
    }
    
    
    
    
    namespace B{
        interface Animal {
            name: string;
            eat(): void;
        }
        export class Dog implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃狗粮。`);
            }
        }
    
        export class Cat implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃猫粮。`);
            }
        }   
    
    }
    
    
    var c=new B.Cat('小花');
    
    c.eat();

    /*
    命名空间:
    
        在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数、类、接口等放置到命名空间内
    
        同Java的包、.Net的命名空间一样,TypeScript的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象。命名空间内的对象通过export关键字对外暴露。
    
    
    命名空间和模块的区别:
    
        命名空间:内部模块,主要用于组织代码,避免命名冲突。
    
        模    块:ts的外部模块的简称,侧重代码的复用,一个模块里可能会有多个命名空间。
    
    */
    
    import {A,B} from './modules/animal';
    
    
    var d=new A.Dog('小黑');
    d.eat();
    
    
    
    var dog=new B.Dog('小花');
    dog.eat();
    export namespace A{
        interface Animal {
            name: string;
            eat(): void;
        }
        export class Dog implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃狗粮。`);
            }
        }
    
        export class Cat implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 吃猫粮。`);
            }
        }   
    
    }
    
    export namespace B{
        interface Animal {
            name: string;
            eat(): void;
        }
        export class Dog implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃狗粮。`);
            }
        }
    
        export class Cat implements Animal {
            name: string;
            constructor(theName: string) {
                this.name = theName;
            }
    
            eat() {
                console.log(`${this.name} 在吃猫粮。`);
            }
        }   
    
    }
  • 相关阅读:
    block: cfq 学习01
    SAS,SATA普及文档
    如何查看盘的类型
    [转载] Linux Futex的设计与实现
    C++ std::map的安全遍历并删除元素的方法
    我的vimrc配置
    .vimrc
    RC: blkio throttle 测试
    LTTng
    基于ADL5317的雪崩光电二极管(APD)偏压控制/光功率监测电路的设计
  • 原文地址:https://www.cnblogs.com/loaderman/p/11041025.html
Copyright © 2011-2022 走看看