📜  TypeScript类(1)

📅  最后修改于: 2023-12-03 14:48:05.778000             🧑  作者: Mango

TypeScript类

TypeScript是一种强类型的JavaScript超集,它提供了面向对象编程的能力,包括类和接口。在TypeScript中,类是一个重要的概念,可以帮助程序员组织和管理代码。

类的基本语法

下面是一个简单的TypeScript类的示例:

class Person {
  private name: string;
  private age: number;

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

  getName(): string {
    return this.name;
  }

  getAge(): number {
    return this.age;
  }
}

const person = new Person("Alice", 25);
console.log(person.getName());   // 输出: "Alice"
console.log(person.getAge());    // 输出: 25

在这个例子中,我们定义了一个名为Person的类,它有两个私有属性nameage,以及一个构造函数和两个公有方法getName()getAge()。在构造函数中,我们通过传入参数来初始化对象的属性。

类的继承

TypeScript支持类的继承,子类可以从父类中继承属性和方法。下面是一个继承的示例:

class Student extends Person {
  private studentId: string;

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

  getStudentId(): string {
    return this.studentId;
  }
}

const student = new Student("Bob", 20, "12345");
console.log(student.getName());          // 输出: "Bob"
console.log(student.getAge());           // 输出: 20
console.log(student.getStudentId());     // 输出: "12345"

在这个例子中,Student类继承了Person类,并新增了一个私有属性studentId以及一个公有方法getStudentId()。在子类的构造函数中,我们使用super关键字调用父类的构造函数来初始化父类的属性。

类的访问修饰符

TypeScript提供了几种访问修饰符来限制类中属性和方法的访问权限:

  • public(默认):公有的属性和方法可以在类的内部和外部访问。
  • private:私有的属性和方法只能在类的内部访问。
  • protected:受保护的属性和方法可以在类的内部和子类中访问。

访问修饰符的示例如下:

class Car {
  private brand: string;
  protected speed: number;

  constructor(brand: string) {
    this.brand = brand;
    this.speed = 0;
  }

  accelerate(): void {
    this.speed += 10;
    console.log(`Accelerating the ${this.brand} to ${this.speed} km/h.`);
  }
}

class ElectricCar extends Car {
  constructor(brand: string) {
    super(brand);
  }

  chargeBattery(): void {
    console.log(`Charging the battery of ${this.brand}.`);
  }
}

const car = new Car("Tesla");
car.accelerate();                   // 输出: "Accelerating the Tesla to 10 km/h."

const electricCar = new ElectricCar("Nissan");
electricCar.accelerate();           // 输出: "Accelerating the Nissan to 10 km/h."
electricCar.chargeBattery();        // 输出: "Charging the battery of Nissan."

在这个例子中,brand属性被声明为私有属性,并且speed属性被声明为受保护的属性。私有属性只能在类的内部访问,而受保护的属性可以在子类中访问。

总结

TypeScript类是组织和管理代码的重要工具。它提供了面向对象编程的能力,包括类的定义、继承、访问修饰符等特性。通过使用TypeScript类,程序员可以更好地组织和结构化他们的代码,并提高代码的可维护性和可读性。