Typescript总结(四)——类的使用

x33g5p2x  于2022-02-28 转载在 TypeScript  
字(1.4k)|赞(0)|评价(0)|浏览(337)

一、认识类的使用
在早期的javascript开发中我们需要通过函数和原型链来实现类的继承,从ES6开始,引入class关键字,可以更加方便的定义和使用类。
Typescript作为javascript的超集,也是支持使用class关键字的,并且还就可以对类的属性和方法等进行静态类型检测。
实际上在JavaScript的开发过程中,我们更加习惯于函数式编程,比如比如React开发中,目前更多使用的函数组件以及结合Hook的开发模式;比如在Vue3开发中,目前也更加推崇使用 Composition API;
类的定义我们通常会使用class关键字,在面向对象的世界里,任何事物都可以使用类的结构来描述,类中包含特有的属性和方法。
二、类的定义

如上图所示,为一个基本的类的定义,如果我们想要在constructor中通过this.name拿到属性,我们必须要在类中进行声明,这一点和javascript中是不一样的。
三、类的继承

上述代码我们通过extends实现继承。

如上述代码所示,我们使用superextends关键字来实现继承和参数传给父类。
四、类的多态

什么是类的多态,就是一个类的不同状态,如上所示代码,FishDog分别继承Animal,并且对其内部的actions的方法存在不同的实现。这就是多态。
五、类的成员修饰符
类中存在三种成员修饰符,分别是public,private,protected。下面将对其进行分别演示。
public修饰符:

public修饰的属性就是任何地方都是可以访问到的,默认编写的就是public修饰符。
private修饰符

如上述代码所示,此时我们给name属性设置private关键字,此时我们不可以在外部访问name,包括也不能在子类中使用该属性。如果我们想要访问和设置该属性的话,我们可以设置setName,getName两个函数来实现name属性和外部通信。
protected修饰符:

如上图所示,我们给name属性设置protected修饰符,表示该属性被保护起来了,只能在该类内部和其子类中使用,其他地方均不能使用。
六、只读属性readonly

如上图所示,此时我们给属性设置readonly时,需要注意以下几点:1、readonly的属性可以在构造器中进行赋值,赋值之后不能修改2、如果一个属性设置readonly,则不能更改,如果我们给一个对象设置readonly属性,则其内部的属性是可以修改的。
七、getters/setters

我们可以使用getters和setters来对private属性来进行赋值。

八、静态成员

以前我们不使用静态成员的话,则必须进行实例化类后,才能调用该类上面的方法和访问到该类上面的属性。现在我们可以使用static属性来设置属性名和方法,我们可以直接通过类名来访问。
九、抽象类abstract

如上图所示,我们实现一个抽象类,然后抽象类中存在一个抽象方法,抽象方法在抽象类中是不存在实现的,我们需要在不同的继承类中实现该方法。如果在继承中我们使用到构造函数,此时我们应该首先调用super(),来调用父类的构造函数。抽象类存在以下几个特征点:1、必须使用abstract2、抽象类不能被实例化,也就是不能使用new关键字,3、抽象方法必须使用abstract关键字,并且在该抽象类中可以不实现
十、类的类型

类可以作为数据类型的,如上图所示,我们将Person作为p1的类型,此时p1必须完全按照Person的类型来进行约束。

相关文章

微信公众号

最新文章

更多