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} 在吃猫粮。`);
            }
        }   
    
    }
  • 相关阅读:
    DOM的认识以及一些节点的应用
    HTML5简介、视频
    PS切图保存后的背景图为透明
    计时器中qq上的一个功能,延时作用
    javascript定时器(上)
    javascript二级联动
    ps切片
    javascript数据类型、初始化
    Windows8 App Store 开发者会关心的文档
    win8 app code中设置Resources里定义好的Style
  • 原文地址:https://www.cnblogs.com/loaderman/p/11041025.html
Copyright © 2011-2022 走看看