返回

掌握TypeScript中的类:从概念到继承的奥妙之旅

前端

TypeScript中的类是对象的模板,它了所创建的对象所共有的属性和方法。类通常用于创建具有相同行为的对象组,例如:创建一组学生对象,每个对象都有姓名、年龄和成绩等属性,以及计算平均成绩等方法。

要创建一个类,可以使用以下语法:

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类有两个属性:nameage,以及一个方法:greet()

要创建一个Person类的对象,可以使用以下语法:

const person = new Person('John Doe', 30);

现在,我们可以使用person对象来访问它的属性和方法:

console.log(person.name); // 'John Doe'
console.log(person.age); // 30
person.greet(); // 'Hello, my name is John Doe and I am 30 years old.'

类的继承

类的继承允许我们创建新的类,这些类继承了父类的属性和方法。这使得我们可以重用代码,并创建更复杂的对象结构。

要创建子类,可以使用以下语法:

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()

要创建一个Student类的对象,可以使用以下语法:

const student = new Student('Jane Doe', 20, 123456789);

现在,我们可以使用student对象来访问它的属性和方法,包括父类Person的属性和方法:

console.log(student.name); // 'Jane Doe'
console.log(student.age); // 20
console.log(student.studentId); // 123456789
student.greet(); // 'Hello, my name is Jane Doe and I am 20 years old.'
student.study(); // 'Jane Doe is studying.'

类的多态性

多态性是指子类对象可以像父类对象一样被使用。这意味着我们可以将子类对象存储在父类对象的数组或集合中,并使用父类的方法来操作它们。

例如,我们可以将Student对象存储在Person对象的数组中,并使用以下代码来遍历数组并调用每个对象的greet()方法:

const people: Person[] = [
  new Person('John Doe', 30),
  new Student('Jane Doe', 20, 123456789),
];

for (const person of people) {
  person.greet();
}

这将输出以下结果:

Hello, my name is John Doe and I am 30 years old.
Hello, my name is Jane Doe and I am 20 years old.

总结

TypeScript中的类是一种强大的工具,它可以让我们创建具有相同属性和方法的对象组。类的继承允许我们创建新的类,这些类继承了父类的属性和方法。类的多态性允许我们使用父类的方法来操作子类对象。