教程 ts tutorial

类与面向对象

TypeScript 在 JavaScript 基础上增强了面向对象编程能力,提供了完整的类支持和类型检查。

类的定义

使用 class 定义类并添加构造函数和方法:

ts
class Person {
  name: string;

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

  greet(): void {
    console.log(`Hello, I'm ${this.name}`);
  }
}

继承与 super

通过 extends 关键字实现继承,子类可调用 super() 使用父类构造器:

ts
class Student extends Person {
  grade: number;

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

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

访问修饰符

TypeScript 支持以下访问修饰符:

  • public:默认,任何地方都可访问
  • private:只能在类内部访问
  • protected:只能在类内部和子类中访问
ts
class Animal {
  protected name: string;

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

class Dog extends Animal {
  bark() {
    console.log(`${this.name} barks`);
  }
}

接口与类的结合使用

类可以实现接口,以强制类具有某些结构:

ts
interface CanSpeak {
  speak(): void;
}

class Human implements CanSpeak {
  speak() {
    console.log("Speaking...");
  }
}

抽象类与多态

抽象类不能实例化,必须由子类实现抽象方法:

ts
abstract class Shape {
  abstract area(): number;
}

class Circle extends Shape {
  constructor(public radius: number) {
    super();
  }

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

多态性允许不同的子类以不同方式实现相同的方法,从而统一调用接口。

ts
const shape: Shape = new Circle(5);
console.log(shape.area());

通过类、继承、抽象等机制,TypeScript 提供了强大的 OOP 支持,适合构建结构清晰、可维护的大型应用。