美文网首页
Typescript小结

Typescript小结

作者: 来了啊小老弟 | 来源:发表于2021-02-13 22:12 被阅读0次

    基本数据类型 微信截图_20210213191024.png

    1.void即没有返回值
    2.any即移除了类型校验,如果对变量不指定类型,则默认是any
    3.字面量: let gender = 'male' | 'female',这个male和female就是字面量
    4.any与unknown的区别:假如let a:unknown;let b:any,可以let c =b,但是不可以let c =a.
    5.枚举

    enum Color {Red, Green, Blue};
    let c: Color = Color.Blue;
    console.log(c);    // 输出 2
    

    6.never 常用于try catch

    接口

    微信截图_20210213204858.png 微信截图_20210213204950.png 微信截图_20210213205027.png
    微信截图_20210213205225.png

    举个例子:限制$.ajax()方法传入的参数规范


    微信截图_20210213205453.png

    抽象类

    以abstract开头的类,注意图片里的注释


    微信截图_20210213200536.png

    定义的抽象方法必须在子类中被重新声明.

    抽象类的使用原则:

    抽象类不能被实例化,需要依靠子类采用向上转型的方式处理;
    抽象类必须有子类去继承,一个子类只能继承一个继承抽象类;
    抽象方法必须是public和protected(因为如果是private,则不能被子类继承,子类就不能实现此方法);
    如果子类继承了此抽象类,则子类必须要重写抽象类中的全部抽象方法(如果子类没有全部重写父类中的抽象方法,则子类也需要定义为abstract的)
    抽象类不能用final声明,因为抽象类必须有子类;

    抽象类和接口的区别:

    抽象类里面可以有方法的实现,但是接口完全都是抽象的,不存在方法的实现;
    子类只能继承一个抽象类,而接口可以被多个实现;
    抽象方法可以是public,protected,但是接口只能是public,默认的;
    抽象类可以有构造器,而接口不能有构造器;
    抽象类当做父类,被继承。且抽象类的派生类的构造函数中必须调用super();接口可以当做“子类”继承其他类

    public private protected

    微信截图_20210213205942.png

    三种访问情况

    class Person{
      name:string
      constructor(name:string){
        this.name = name
      }
      sayHello(){
        console.log(this.name) //类内部使用属性
      }
    }
    
    
    const wang = new Person('王')
    wang.sayHello() //实例访问属性(类外部使用属性)
    
    class NewPerson extends Person{
      name:string
      constructor(name:string){
        super(name)
        this.name = name
      }
      sayHello(){
        console.log(this.name) //子类内部使用属性
      }
    }
    

    public

    默认的修饰符

    private

    只能在类中调用,如果要改的话只能在类中声明额外的方法进行修改,有利于私有属性的保护

    protected

    可以在类和子类中调用,无法在new实例内部调用

    静态属性和静态方法 static

    静态属性也就是类属性,不需要通过实例化类也可以直接调用

    当直接调用类里面的属性和方法时,会出现问题

    class Per{
      name:string='tom'
      constructor(name:string){
        this.name = name
      }
      sayHello(){
        console.log(123) //类内部使用属性
      }
    }
    console.log(Per.name) //Per  应该是tom
    Per.sayHello() //报错 类型“typeof Per”上不存在属性“sayHello”
    

    这个时候使用static可以解决问题

    class Per{
      static names:string='tom'
      age:number
      constructor(age:number){
        this.age = age
      }
       static sayHello(){
        console.log(this.names) //类内部使用属性
      }
    }
    
    console.log(Per.names) //tom
    Per.sayHello() //tom
    

    注意:此时如果sayHello里console.log(this.age)会出问题,因为age不是静态属性,无法调用,如果要使用age的话需要把age也换成static

    多态

    父类定义一个方法不去实现,让他的子类去实现,每一个子类对这个方法有不同的表现
    ,多态属于继承


    微信截图_20210213214955.png

    泛型

    当类型不明确的时候,用一个变量来表示类型,这就是泛型


    微信截图_20210213221158.png
    微信截图_20210213221108.png

    相关文章

      网友评论

          本文标题:Typescript小结

          本文链接:https://www.haomeiwen.com/subject/ponsxltx.html