返回

TS 学习笔记(二):解开类、继承和构造器的奥秘

前端

前言

欢迎来到 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 的高级特性,例如接口、泛型和模块。