TypeScript抽象类
什么时抽象类?
被
abstract
修饰的类,就是抽象类,抽象类又叫基类
为什么要有抽象类?
为了规定类中的一些属性和方法,在被继承的时候必须重写,所以被
abstract
修饰的方法和属性,在继承时必须重
写,分别叫做抽象类和抽象方法
抽象类的特点:
抽象类自身无法实例化,必须由子类(派生类)进行实例化
抽象类也可以拥有自己的抽象方法和属性
抽象类中的抽象方法和抽象属性必须被重写
TypeScript抽象类的定义与使用
TypeScript接口
接口定义使用
interface
关键字
接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负
责定义一个类的结构,接口可以去限制一个对象的接口,对象只有包含接口中定义的所有属性和方法时才能匹配接口。同时,可以让一个
类去实现接口,实现接口时类中要保护接口中的所有属性
需要注意接口不能转换为
JavaScript
。 它只是
TypeScript
的一部分。
![](https://i-blog.csdnimg.cn/blog_migrate/c265981519cef6866358ecd5497e611c.png)
实现接口
接口的实现使用
implements
关键字
同一个类可以实现多个接口
抽象类也可以实现接口
接口不能实现接口,但可以使用
extends
扩展
![](https://i-blog.csdnimg.cn/blog_migrate/529087ccf95b49e4c1e51ef5604456a4.png)
泛型
在定义函数和类时,遇到类型不明确的时候就可以使用泛型
泛型可以指定多个
![](https://i-blog.csdnimg.cn/blog_migrate/c9afb666f6fe2047b2129523f4c75294.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ac93607769a15c157f5f2d8507486306.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8b0c6c4219603889395fc356b398ba4c.png)
TypeScript中奇怪的符号
!
非空断言操作符,
值域中排除
null
和
undefined
?.
可选链,遇到
null
或
undefined
就可以立即停止某些表达式的运行
??
空值合并运算符,当左侧操作数为
null
或
undefined
时,其返回右侧的操作数,否则返回左侧的操作数
?:
可选属性,在接口中使用,在实现的时候,表示属性可选
Partial
快速把某个接口类型中定义的所有属性变成可选
Required
快速把某个接口类型中定义的所有属性变成必选