返回
TypeScript 中的类——纯粹的面向对象编程范式
前端
2023-09-14 15:57:40
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
,以及一个方法 greet()
。我们可以使用 new
关键字来创建 Person
类的实例:
const person1 = new Person('John Doe', 30);
person1.greet(); // Hello, my name is John Doe and I am 30 years old.
继承
继承是 OOP 中的一种重要概念,它允许我们创建新的类,这些类共享父类的属性和行为。例如,我们可以定义一个 Student
类来表示学生,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()
。我们可以使用 new
关键字来创建 Student
类的实例:
const student1 = new Student('Jane Doe', 20, 12345);
student1.greet(); // Hello, my name is Jane Doe and I am 20 years old.
student1.study(); // Jane Doe is studying.
多态性
多态性是 OOP 中的另一个重要概念,它允许我们对不同的对象使用相同的接口。例如,我们可以定义一个 greet()
方法,它可以被 Person
类和 Student
类中的对象调用,即使这些对象具有不同的属性和行为:
function greet(person: Person) {
console.log(`Hello, my name is ${person.name} and I am ${person.age} years old.`);
}
greet(person1); // Hello, my name is John Doe and I am 30 years old.
greet(student1); // Hello, my name is Jane Doe and I am 20 years old.
多态性使我们能够编写更灵活和可重用的代码,因为它允许我们在不修改代码的情况下处理不同类型