窥探TypeScript中的Class
2023-10-15 00:02:25
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成为一种非常适合编写大型和复杂的应用程序的语言。