JS TypeScript 类:从基础到进阶的全面解析

2025-12-27 3411阅读

JS TypeScript 类:从基础到进阶的全面解析

在 JavaScript 编程领域,TypeScript 凭借其强大的类型系统为开发者带来了更可靠的代码。其中,类(Class)是 TypeScript 中面向对象编程的重要组成部分。

类的基础定义

TypeScript 中的类与传统面向对象语言中的类概念相似。我们可以使用 class 关键字来定义一个类。例如:

class Person {
  name: string;
  age: number;

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

  introduce() {
    console.log(`My name is ${this.name}, and I'm ${this.age} years old.`);
  }
}

在上述代码中,我们定义了一个 Person 类。它有两个属性 name(字符串类型)和 age(数字类型),通过构造函数 constructor 来初始化这两个属性,还有一个 introduce 方法用于输出人物信息。

类的继承

继承是类的重要特性之一。通过继承,我们可以创建一个子类,继承父类的属性和方法。

class Student extends Person {
  grade: number;

  constructor(name: string, age: number, grade: number) {
    super(name, age); // 调用父类构造函数
    this.grade = grade;
  }

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

这里 Student 类继承自 Person 类。在子类的构造函数中,使用 super 关键字调用父类的构造函数来初始化从父类继承的属性,然后再初始化自己特有的 grade 属性。同时,子类还可以添加自己的方法,如 study 方法。

访问修饰符

TypeScript 提供了访问修饰符来控制类成员的访问权限。

  • public:默认修饰符,类的成员在类内外都可以访问。
  • private:成员只能在类内部访问。

    
    class Car {
    private brand: string;
    public model: string;
    
    constructor(brand: string, model: string) {
    this.brand = brand;
    this.model = model;
    }
    
    showBrand() {
    console.log(`The brand is ${this.brand}.`); // 类内部可以访问 private 成员
    }
    }

const myCar = new Car('Toyota', 'Corolla'); // console.log(myCar.brand); // 报错,无法在类外部访问 private 成员 console.log(myCar.model); // 可以访问 public 成员

- **`protected`**:成员在类内部和子类中可以访问。
```typescript
class Animal {
  protected species: string;

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

class Dog extends Animal {
  constructor() {
    super('Canine');
    console.log(`The species is ${this.species}`); // 子类可以访问 protected 成员
  }
}

类的静态成员

静态成员属于类本身,而不是类的实例。使用 static 关键字来定义。

class MathUtils {
  static add(a: number, b: number): number {
    return a + b;
  }
}

const result = MathUtils.add(3, 5);
console.log(result);

这里 add 方法是 MathUtils 类的静态方法,通过类名直接调用。

抽象类

抽象类是一种不能直接实例化的类,它用于定义一些抽象方法(只有方法声明,没有方法实现),子类必须实现这些抽象方法。

abstract class Shape {
  abstract calculateArea(): number;
}

class Circle extends Shape {
  radius: number;

  constructor(radius: number) {
    super();
    this.radius = radius;
  }

  calculateArea(): number {
    return Math.PI * this.radius ** 2;
  }
}

Shape 是抽象类,它定义了抽象方法 calculateAreaCircle 类继承自 Shape 类并实现了 calculateArea 方法。

TypeScript 的类为我们构建复杂的应用程序提供了强大的工具。通过合理运用类的定义、继承、访问修饰符、静态成员以及抽象类等特性,我们可以编写出结构清晰、易于维护且类型安全的代码。随着项目规模的增大,这些特性的优势将更加明显,帮助我们更好地组织代码逻辑,提高开发效率。

文章版权声明:除非注明,否则均为Dark零点博客原创文章,转载或复制请以超链接形式并注明出处。