Typescript小结

2021-02-13  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读