zoukankan      html  css  js  c++  java
  • 07、TypeScript 命名空间

    命名空间

    /*
      命名空间:
        在代码量比较大的情况下,为了避免各种变量命名项冲突,可将相似功能的函数,类,接口等放置到命名空间内
        同 Java 包,.net 的命名空间一样,TypeScript 的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象。命名空间内的对象通过 export
      命名空间和模块的区别:
        命名空间:内部模块,主要用于组织代码,避免命名冲突
        模块:ts 的外部模块的简称,侧重代码的复用,一个模块里可能会有多个命名空间
    */
    
    // 声明一个命名空间 A ,A 命名空间中的代码是私有的
    // 我们还可以声明一个命名空间 B ,B 中的变量名称,接口名称等可以与 A 中一致,不会导致命名冲突
    namespace A {
      interface Animal {
        name: string;
    
        eat(): void;
      }
    
      // 命名空间里面的方法默认私有的,如果在外部使用,需要 export
      export class Dog implements Animal {
        name: string;
    
        constructor(name: string) {
          this.name = name;
        }
    
        eat() {
          console.log(`${this.name}吃狗粮`);
        }
      }
    
      export class Cat implements Animal {
        name: string;
    
        constructor(name: string) {
          this.name = name;
        }
    
        eat() {
          console.log('吃老鼠');
        }
      }
    }
    
    // 这里 A 命名空间中的 Dog 必须暴露 export ,否则访问不到 Dog
    var aDog = new A.Dog('A狼狗');
    aDog.eat();
    
    namespace B {
      interface Animal {
        name: string;
    
        eat(): void;
      }
    
      // 命名空间里面的方法默认私有的,如果在外部使用,需要 export
      export class Dog implements Animal {
        name: string;
    
        constructor(name: string) {
          this.name = name;
        }
    
        eat() {
          console.log(`${this.name}吃狗粮`);
        }
      }
    
      export class Cat implements Animal {
        name: string;
    
        constructor(name: string) {
          this.name = name;
        }
    
        eat() {
          console.log('吃老鼠');
        }
      }
    }
    var bDog = new A.Dog('B狼狗');
    bDog.eat();

    命名空间也可以模块化,进行封装,然后 import 使用

  • 相关阅读:
    查看Java中每个数据类型所占的位数,和表示数值的范围,并得出结论。
    同名变量的屏蔽原则
    反码,补码,原码
    机器学习概念性知识总结
    图的最短路径问题
    System Design 笔记及代码(系统设计)
    2016网易游戏实习算法题解(今年找暑期实习的时候参加的)
    Google java style
    18.1---不用加号的加法(CC150)
    Java模板模式(template)
  • 原文地址:https://www.cnblogs.com/zhangning187/p/mmkjzn187210413.html
Copyright © 2011-2022 走看看