如果有关注我们的读者可以看到前面是有写关于typescript的内容的,今天我们来简单介绍一下typescript中的class(类)。

  • 类:定义了一切事物的抽象特点
  • 对象:类的实例
  • 面对对象三大特性:封装、继承、多态
  • 封装:将数据操作的细节隐藏起来,只暴漏对外的接口,外界不知道细节,只能通过接口访问。
  • 继承:子类继承父类,子类除了拥有父类的特征外还有一些具体的特性
  • 多态:由继承产生了相关的不同的类,对不同的方法有不同的响应。针对某个实例,可以直接调用某个方法而不用管是哪个类

我们简单来看一下实例,通过实例的讲解,可能会有关于typescript类的更好的收获。

typescript class(类)
面对对象给人一种上帝的感觉,首先是绘制蓝图,创建一个类叫animal,这是一个基本类,我们的蓝图是这么样绘制的,可以看到类中有一个构造函数,这是一个实例化然后执行的逻辑,然后我们有一个方法 run() ,里面只是简单的输出一行话,然后我们创建一条蛇,名字叫lily,然后我们让他使用 run() 这个方法,看下结果。
typescript class(类)
typescript class(类)
我们创建一个新的类,继承了 animal 这个类,然后我们除了有 run 这个方法外,还添加了一个 bark 使用 extends 继承继承以后呢,我们自然就会拥有上面父类所拥有的属性和方法了。 然后我们创建一只狗,名字叫 xiaobao ,之后调用它的 run 以及 bark 方法。
typescript class(类)
typescript class(类)
然后简单说一下多态,可以看到我们对 constructor 重写,注意,我们要重写函数的话,需要使用这个 super 方法才行,可以看到我们添加了一个 console.log 然后又把 run 重写了一下。可以看一下 run 这个方法,我们如果要调用父类的方法的话,需要使用 super 这个关键字才行。
typescript class(类)
以上皆为类的实例,实例上的属性,实例上的方法。
那么我们类是否有可以直接访问的属性和方法呢?这里就要用到前面的 static 了,简单定义一下 static categories = ["mammal"] ,我们创建了一个静态属性。
typescript class(类) 我们在后面添加一个 console.log(Cat.categories) 直接调用一下,看一下结果。
typescript class(类) 可以看到定义的mammal出现了,这说明我们可以直接访问静态的属性,为什么要用这样的静态属性或者方法呢?是因为我们定义的和这个实例的状态没有太大的关系。前面是简单介绍了一下class(类),接下来我们回归typescript的正题。  typescript提供了三种修饰符。

  • public:修饰的属性或方法是共有的。 可以在任何地方被调用到,我们的默认属性或者方法就是public。
  • private:修饰的属性或方法是私有的。  不能在声明它的类的外部调用。
  • protected:修饰的属性或方法是受保护的和private类似,但是还是有不同的地方,我们简单看一下例子。

typescript class(类)这里我们将上面的代码换成 ts ,我们如果不想让 run 方法被其他人调用的话,可以直接添加 private 到 run 方法前面,之后我们可以看到下面的 snake 调用 run 方法的时候报错了。

typescript class(类)

告诉我们不允许访问或者修改这个 run 方法,因为 private 定义了我们只能在类的内部进行修改。那我们应该怎么样让子类访问父类的属性和方法呢?这时候就要用到前面的 protected 。
typescript class(类)
如果我们将前面的 private 修改位 protected 的话,可以看到我们的子类可以调用父类的 run 了,这个就比较像是继承了,只有我和我的子女可以访问这个方法或者属性,外部人员一概无法访问。
但是我们有时候会有一些特殊的需求,比如说属性只能读不能写,该怎么实现呢?

typescript 还给我们提供了一个特殊的修饰符号,来告诉我们这个属性只能读不能写。
typescript class(类)
这个修饰符号就是 readonly了如果我们修改一下 name 这个属性获得到什么样的答案呢?typescript class(类)答案是自然不能修改的。
typescript class(类)
好了,今天关于typescript class(类)的内容就介绍到这里了,如果有什么疑问可以在评论区留言,我会在看到的第一时间进行回复的。

最后修改:2021 年 04 月 19 日 04 : 19 PM
如果觉得我的文章对你有用,请随意赞赏