TypeScript Class(类)
00 分钟
2024-7-5
2024-7-5
type
status
date
slug
summary
tags
category
icon
password

什么是 Class(类)

类是对象的蓝图或模板,它定义了对象的属性和方法。在 TypeScript 中,类的定义与 JavaScript 非常相似,但 TypeScript 提供了静态类型和访问修饰符,使得类的使用更加灵活和安全。类的定义包括属性(成员变量)和方法(成员函数),它们共同构成了类的功能和行为。

定义一个类

我们可以使用 class 关键字来定义一个类。例如,定义一个简单的 Person 类:
在上面的代码中,我们定义了一个 Person 类,包含两个属性 nameage,以及一个构造函数和一个 greet 方法。构造函数用于初始化对象的状态,而方法定义了对象的行为。

继承

类的继承是面向对象编程的一个重要特性,它允许我们创建一个基于现有类的新类。我们使用 extends 关键字来实现继承。例如,定义一个 Student 类继承自 Person 类:
在上面的代码中,Student 类继承了 Person 类,并增加了一个新的属性 grade 和一个新的方法 study。通过继承,我们可以重用已有类的功能,并在此基础上进行扩展。

访问修饰符

TypeScript 提供了三种访问修饰符:publicprivateprotected。这些修饰符可以控制类成员的可见性和访问权限。
  • public:默认修饰符,表示成员是公开的,可以被类的内部和外部访问。
  • private:表示成员是私有的,只能在类的内部访问。
  • protected:表示成员是受保护的,可以在类的内部和子类中访问。
在上面的代码中,name 是公开的,可以在类的外部访问;age 是私有的,只能通过 getAge 方法访问;species 是受保护的,可以在子类 Dog 中访问。通过使用访问修饰符,我们可以更好地控制类成员的可见性和安全性。

静态成员

除了实例成员,类还可以包含静态成员。静态成员属于类本身,而不是类的实例。我们可以使用 static 关键字来定义静态成员。
在上面的代码中,PIcalculateCircumference 是静态成员,属于 MathUtil 类,而不是某个实例。静态成员通常用于定义与类相关的常量或工具方法。

抽象类和抽象方法

抽象类是不能被实例化的类,只能被其他类继承。抽象类可以包含抽象方法,这些方法没有实现,必须在派生类中实现。我们可以使用 abstract 关键字来定义抽象类和抽象方法。
在上面的代码中,Shape 是一个抽象类,包含一个抽象方法 calculateAreaCircle 类继承了 Shape 并实现了 calculateArea 方法。抽象类和抽象方法用于定义通用的接口,而具体的实现由子类提供。

接口和类

接口可以用来定义类的结构,类可以实现一个或多个接口。接口定义了类应该具有的属性和方法,但不提供实现。
在上面的代码中,我们定义了一个 Drivable 接口,并在 Car 类中实现了该接口。接口用于定义类的行为规范,确保类实现特定的方法。

多态性

多态性是面向对象编程的另一个重要特性,它允许我们通过父类的引用来调用子类的方法。这样,我们可以编写更加灵活和可扩展的代码。
在上面的代码中,我们定义了一个 Animal 抽象类和两个子类 CatDog。通过多态性,我们可以使用父类的引用来调用子类的方法,从而实现灵活的代码结构。

类型断言

在某些情况下,我们可能需要将一个实例转换为特定的类类型。这时,我们可以使用类型断言来明确指定实例的类型。
在上面的代码中,我们使用了类型断言将 Bike 实例转换为 Vehicle 类型,并随后将其转换回 Bike 类型以调用特定的方法。

类装饰器

类装饰器是一种特殊的声明,它可以用来修改类的行为或添加额外的功能。我们可以使用 @ 符号来定义和应用装饰器。
在上面的代码中,我们定义了一个 logClass 装饰器,用于在类被创建时日志记录。通过使用装饰器,我们可以轻松地添加额外的功能,而无需修改类的定义。
上一篇
Vue 最新消息及变化
下一篇
tsConfig 配置