返回

窥探TypeScript中的Class

见解分享

TypeScript中的类(Class)

传统方法中,JavaScript 通过构造函数实现类的概念,通过原型链实现继承。而在 ES6 中,我们终于迎来了 class。 TypeScript 除了实现了所有 ES6 中的类的功能以外,还添加了一些新的用法。 这一节主要介绍类的用法,下一节再介绍如何定义类的类型。 虽然目前 TypeScript 还不支持泛型,但相信不久的将来就会支持。

TypeScript中的类与JavaScript中的类

TypeScript中的类与JavaScript中的类在很多方面相似,但在以下几点上有所不同:

  • TypeScript中的类必须显式地声明其成员的类型。 这意味着您必须在类中显式地声明字段和方法的类型。这使得TypeScript中的代码更加安全,因为编译器可以检查您是否正确地使用了类型。
  • TypeScript中的类可以使用访问控制修饰符来控制成员的访问权限。 访问控制修饰符有三种:public、protected和private。public表示成员可以被任何其他类或模块访问。protected表示成员只能被派生类访问。private表示成员只能被本类访问。
  • 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.`);
  }
}

如您所见,Person类包含两个字段:name和age。它还包含一个构造函数,该构造函数在创建类的实例时被调用。构造函数有两个参数:name和age,它们被用来初始化类的字段。

Person类还包含一个名为greet的方法。该方法在类的实例上被调用,它将打印一条消息到控制台。

TypeScript中的类的继承

TypeScript中的类可以使用继承来创建新的类。继承允许您创建一个新类,该类继承另一个类的所有成员。这使得您可以在现有代码的基础上创建新的类,而无需重复编写相同的代码。

要创建一个继承另一个类的类,您需要使用extends关键字。例如,以下代码创建一个名为Student的类,该类继承Person类:

class Student extends Person {
  studentId: number;

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

  study() {
    console.log(`I am studying.`);
  }
}

如您所见,Student类继承了Person类的所有成员。它还包含一个新的字段:studentId。它还包含一个新的方法:study()。

TypeScript中的类的静态成员

TypeScript中的类可以使用静态成员。静态成员属于类本身,而不是类中的任何实例。这使得您可以在不创建类的实例的情况下使用类的成员。

要创建一个静态成员,您需要使用static关键字。例如,以下代码创建了一个名为PI的静态字段:

class Math {
  static PI = 3.141592653589793;

  static calculateArea(radius: number) {
    return Math.PI * radius * radius;
  }
}

如您所见,Math类包含一个静态字段:PI。它还包含一个静态方法:calculateArea()。

TypeScript中的类的访问控制修饰符

TypeScript中的类可以使用访问控制修饰符来控制成员的访问权限。访问控制修饰符有三种:public、protected和private。

  • public 表示成员可以被任何其他类或模块访问。
  • protected 表示成员只能被派生类访问。
  • private 表示成员只能被本类访问。

要使用访问控制修饰符,您需要在成员的声明前加上修饰符。例如,以下代码创建了一个名为name的私有字段:

class Person {
  private name: string;

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

  greet() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

如您所见,name字段被声明为私有字段。这意味着它只能在本类中访问。

总结

TypeScript中的类提供了许多强大的功能,包括类型检查、访问控制、继承和静态成员。这些功能使TypeScript成为一种非常适合编写大型和复杂的应用程序的语言。