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} 在吃猫粮。`);
            }
        }   
    
    }
  • 相关阅读:
    软阴影的实现(转帖)
    卡巴斯基:警惕IE拦截器恶意推广导航网站 狼人:
    安全问题拷问着电子支付第三方未来 狼人:
    微软警告:泄露的Office 2010预览版或含病毒 狼人:
    《越狱》完结 米帅迷应小心纹身网站挂马 狼人:
    赛门铁克和McAfee:目标锁定iPhone! 狼人:
    McAfee将与EMC合作推出在线PC备份服务 狼人:
    恶意软件分析师:面临社交网络威胁的用户已10亿 狼人:
    Mac OS X现漏洞 苹果称是Java导致恶意攻击 狼人:
    暴风影音声明:DNS服务器才是故障源头 狼人:
  • 原文地址:https://www.cnblogs.com/loaderman/p/11041025.html
Copyright © 2011-2022 走看看