返回

TypeScript之旅: 探索类的概念及其功能

前端

类(Class): 面向对象的基石

在软件开发中,类是一个基本概念,它允许我们将具有相同特征和行为的一组对象组合在一起。在TypeScript中,类也是如此。

TypeScript 中的类

TypeScript中的类使用class定义,它包含了类的属性和方法。属性用于存储数据的变量,而方法用于对数据执行操作。

例如,以下代码定义了一个名为Person的类:

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

构造函数(Constructor)

构造函数是一个特殊的方法,它会在创建一个新对象时自动调用。它通常用于初始化对象的属性。

在上面的示例中,Person类的构造函数有两个参数,nameage。当创建一个新对象时,这些参数将被传递给构造函数,并被用来初始化对象的属性。

继承(Inheritance)

继承允许我们从一个现有的类创建新类,新类将继承现有类的属性和方法。这可以帮助我们减少代码重复,并使我们的代码更加模块化。

例如,以下代码定义了一个名为Student的类,它继承了Person类:

class Student extends Person {
  studentId: number;

  constructor(name: string, age: number, studentId: number) {
    super(name, age);
    this.studentId = studentId;
  }

  study() {
    console.log(`${this.name} is studying.`);
  }
}

Student类继承了Person类的属性和方法,并添加了自己的属性studentId和方法study()

访问修饰符(Access Modifiers)

访问修饰符用于控制对类成员的访问权限。在TypeScript中,有三个访问修饰符:

  • public:表示该成员可以从任何地方访问。
  • protected:表示该成员只能从该类及其子类访问。
  • private:表示该成员只能从该类内部访问。

例如,以下代码演示了访问修饰符的使用:

class MyClass {
  public publicProperty: number;
  protected protectedProperty: string;
  private privateProperty: boolean;

  constructor() {
    this.publicProperty = 10;
    this.protectedProperty = "Hello";
    this.privateProperty = true;
  }

  public publicMethod() {
    console.log(this.publicProperty);
    console.log(this.protectedProperty);
    console.log(this.privateProperty);
  }

  protected protectedMethod() {
    console.log(this.publicProperty);
    console.log(this.protectedProperty);
  }

  private privateMethod() {
    console.log(this.publicProperty);
  }
}

在上面的示例中,publicProperty可以从任何地方访问,protectedProperty只能从该类及其子类访问,privateProperty只能从该类内部访问。

静态成员(Static Members)

静态成员是属于类的成员,而不是属于类的实例。这意味着静态成员可以被所有类的实例共享。

在TypeScript中,静态成员使用static关键字定义。例如,以下代码演示了静态成员的使用:

class MyClass {
  static staticProperty: number;

  static staticMethod() {
    console.log("This is a static method.");
  }
}

MyClass.staticProperty = 10;
MyClass.staticMethod();

在上面的示例中,staticPropertystaticMethod都是静态成员,它们可以被所有MyClass类的实例共享。

结论

类是TypeScript中面向对象编程的基础。通过使用类,我们可以创建具有相同特征和行为的对象,并通过继承机制创建新的类,从而减少代码重复并使我们的代码更加模块化。

访问修饰符可以帮助我们控制对类成员的访问权限,而静态成员则可以被所有类的实例共享。