zoukankan      html  css  js  c++  java
  • typescript中的类与接口的关系

    类实现接口

    接口可以规定一个类的定义必须包含某些内容。类实现接口使用关键字 implements。

    interface UserInterface{
      name:string;
      age:number;
    }
    
    // 类实现接口
    class User implements UserInterface{
      name:string;
      age:number;
      constructor(name:string,age:number){
        this.name = name
        this.age = age
      }
    }

    需要注意的是,使用接口定义的类,接口检测的是该类创建的实例是否符合接口规范,如果改一下上面的例子就会报错了:

    class User implements UserInterface{
      static name:string; // error,加上 static,该属性不会添加到实例上,所以实例就不符合接口
      age:number;
      constructor(name:string,age:number){
        // this.name = name
        this.age = age
      }
    }

    接口继承类

    接口可以继承一个类,当接口继承了该类后,只继承成员和成员类型,不包括实现。

    class Point{
      x:number;
      y:number;
    }
    
    interface Point3d extends Point{
      z:number
    }
    
    const point3d:Point3d = {x: 3, y: 4, z: 5}

    接口还能继承类中被 private 和 protected 修饰的成员,当接口继承的这个类中包含这两个修饰符修饰的成员时,这个接口只可被这个类或他的子类实现。

    class A{
      protected name:string;
    }
    
    interface I extends A{}
    
    class B implements I{
      name:string; // error, 属性“name”受保护,但类型“B”并不是从“A”派生的类
    }
    
    class C extends A implements I{
      name:string;
    }
  • 相关阅读:
    redis-原理-对象-列表对象(八)
    分布式事物-Saga
    分布式事物-本地消息表
    分布式事物-TCC
    分布式事物-XA协议
    Spring Boot-多环境配置(十)
    maven-maven-resources-plugin插件使用
    maven-assembly-plugin插件使用
    20201207 徐艺铭 《信息安全导论》第三周学习总结
    20201207 徐艺铭 第二周学习总结
  • 原文地址:https://www.cnblogs.com/wjaaron/p/12821985.html
Copyright © 2011-2022 走看看