返回
TS 学习笔记(二):解开类、继承和构造器的奥秘
前端
2024-02-01 14:00:27
前言
欢迎来到 TypeScript 学习笔记系列的第二部分。在上一篇文章中,我们探索了 TypeScript 的基础知识和数据类型。现在,我们准备深入了解面向对象编程的基石:类。
类的定义与继承
类是 TypeScript 中创建自定义对象类型的方式。它们允许我们封装数据和行为,并通过继承关系来组织它们。要定义一个类,我们使用 class
,后面跟类名:
class Person {
// 类成员
}
继承允许一个类(子类)从另一个类(父类)继承属性和方法。子类可以扩展父类并添加自己的特性:
class Employee extends Person {
// 员工专属属性和方法
}
类中的访问类型
TypeScript 提供了三种访问类型来控制类成员的可见性:
- 公共(public): 在类的内部和外部都可以访问。
- 受保护(protected): 只能在类本身和派生类中访问。
- 私有(private): 只能在类本身内部访问。
例如:
class Car {
public make: string; // 公共属性
protected model: string; // 受保护属性
private year: number; // 私有属性
}
构造器
构造器是类中的特殊方法,用于在创建对象时初始化属性。它们在类名称后使用 constructor
关键字定义:
class Animal {
constructor(name: string) {
this.name = name;
}
}
getter 和 setter
getter 和 setter 允许我们以一种更优雅和可控的方式获取和设置对象的属性。getter 是一个返回属性值的函数,而 setter 是一个更新属性值的函数:
class User {
private _name: string;
get name(): string {
return this._name;
}
set name(value: string) {
if (value.length < 3) {
throw new Error("Name must be at least 3 characters long.");
}
this._name = value;
}
}
抽象类
抽象类是无法直接实例化的类。它们用于定义一个蓝图,派生类必须实现该蓝图才能创建对象。它们在类名称前使用 abstract
关键字定义:
abstract class Shape {
abstract area(): number; // 抽象方法
}
class Circle extends Shape {
// 实现抽象方法
}
结论
类、继承和构造器是 TypeScript 中面向对象编程的基础。通过理解这些概念,我们可以创建健壮且可维护的应用程序。在下一篇文章中,我们将进一步探索 TypeScript 的高级特性,例如接口、泛型和模块。