TypeScript中的类

发布时间 2023-06-26 10:40:25作者: 中亿丰数字科技

1. 类的基本语法

在 TypeScript 中,使用 class 关键字来定义类。以下是一个简单的类的示例:

class Person {
  private 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'm ${this.age} years old.`);
  }
}

在上面的例子中,Person 类具有一个私有成员 name 和一个公共成员 age,并且定义了一个构造函数 constructor 和一个 greet 方法。

2. 成员修饰符

TypeScript 提供了几种成员修饰符,用于控制类成员的可访问性:

  • public:默认修饰符,表示成员可以在类的内部和外部访问。
  • private:表示成员只能在类的内部访问。
  • protected:表示成员可以在类的内部和派生类中访问。

例如,我们可以将 name 成员改为 private,并在 greet 方法中访问它:

class Person {
  private 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'm ${this.age} years old.`);
  }
}

3. 继承

TypeScript 支持类的继承,通过使用 extends 关键字来实现。子类可以继承父类的属性和方法,并且可以覆盖父类的方法或添加新的方法。

以下是一个继承的示例:

class Student extends Person {
  studentId: string;

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

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

在上面的例子中,Student 类继承自 Person 类,并添加了一个新的成员 studentId 和一个 study 方法。

4. 多态

多态是面向对象编程的一个重要概念,它允许不同的对象对同一个方法做出不同的响应。在 TypeScript

中,我们可以使用类的继承和方法的重写来实现多态。

以下是一个多态的示例:

class Animal {
  name: string;

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

  makeSound() {
    console.log("Generic animal sound.");
  }
}

class Dog extends Animal {
  makeSound() {
    console.log("Woof!");
  }
}

class Cat extends Animal {
  makeSound() {
    console.log("Meow!");
  }
}

function playWithAnimal(animal: Animal) {
  animal.makeSound();
}

const dog = new Dog("Buddy");
const cat = new Cat("Whiskers");

playWithAnimal(dog); // 输出 "Woof!"
playWithAnimal(cat); // 输出 "Meow!"

在上面的例子中,Animal 类定义了一个 makeSound 方法,而 DogCat 类分别重写了这个方法。通过将不同的对象传递给 playWithAnimal 函数,我们可以实现多态,使得每个对象都发出不同的声音。

5. 提升代码可维护性和可扩展性

使用类的概念可以提高代码的可维护性和可扩展性。通过将相关的数据和方法封装在一个类中,可以提高代码的组织性和可读性。类的继承和多态让我们能够构建更具灵活性的代码结构,使得代码更容易扩展和重用。

此外,TypeScript 还提供了接口(interface)的概念,可以进一步定义类的结构和行为。接口可以用于约束类的实现,使得代码更加规范和可靠。