Typescript小结
基本数据类型 微信截图_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