Typescript派生类和抽象类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Typescript派生类和抽象类相关的知识,希望对你有一定的参考价值。

派生类

实例化派生类时,我们需要初始化基类的属性,然后调用基类的构造函数,再进行初始化派生类的属性,最后调用类派生类的构造函数。ts中的类仅仅支持单继承,extends只能指定一个基类,不支持多继承。当接口继承一个类,那么这个接口会拥有这个类的属性和方法。我们可以通过​​implements​​来解决一个类只允许继承一个基类的问题。只要在多个接口之间用逗号隔开就行。

class Peo 
class Tear
// 这样会报错
class Map extends Peo, Tear
// 可以这样写
class Map extends Peo

// 多个接口
interface X
interface Y
class Z implements X, Y

静态成员

类的静态成员时不属于任何类的实例,而是类的本身,类中使用​​static​​关键字定义类的静态成员,而且只能通过类名去访问。当类设置为public时,在当前类的内部、外部以及派生类的内部都可以进行访问,没有任何限制。静态成员中protected和public都可以被继承。

抽象类

ts中的抽象类和抽象成员使用​​abstract​​关键字,我们只需要在定义类的时候在class前添加这个abstract关键字就行。我们需要知道的是抽象类不能被实例化,也不允许使用new运算符去创建。但是抽象类可以继承其他抽象类,派生类也可以继承抽象类。抽象类中可以使用非抽象成员和抽象成员。如果抽象类中抽象成员声明了private,就不能在派生类中去实现这个成员。

abstract clas C 
abstract class D extends C

泛型

泛型我们可以使用​​identity​​函数去应用,当我们在例子中定义了number类型,那么这个参数只能接收number类型,不能接收其他类型,如果想接收其他类型,我们可以将age: number修改为age: any,这样就可以接收任意类型去使用。但是这样设置参数类型和返回值类型可能就不同了。泛型类型参数支持多个形式类型参数,每个类型参数之间用逗号隔开。形式类型参数也需要符合标识符,一般首字母大写。在声明形式类型参数时,可以设置默认类型。当一个形式参数没有默认类型,那这个参数类型就是必选的。如果这个形式参数定义了默认类型,那么这个参数类型就是可选的。类型参数需要先定义再使用,不然编译时会报错。

function Peo(age: number): number 
return age;

Peo(6)

以上是关于Typescript派生类和抽象类的主要内容,如果未能解决你的问题,请参考以下文章

使用从 WinRT 网格类派生的抽象类时,CastToBase 未解决的外部符号错误?

使用从WinRT Grid Class派生的抽象类时,CastToBase是否解决了外部符号错误?

抽象类和接口

TypeScript躬行记——类

在 TypeScript 中为具有类型变量的抽象类中的派生类分配泛型类型

抽象类和接口学习小结