全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 8 分钟 ✍️ juanwangdev

TypeScript 类与面向对象

TypeScript 类语法与 ES6 一致,额外支持类型注解与访问修饰符,下面梳理核心用法。

类基础语法

定义类

TypeScript
class Person {
  // 属性声明
  name: string;
  age: number;

  // 构造函数
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  // 方法
  greet(): string {
    return `Hello, I'm ${this.name}, ${this.age} years old.`;
  }
}

const p = new Person("Alice", 25);
console.log(p.greet());

参数属性(简化写法)

构造函数参数前加访问修饰符,自动创建并赋值属性:

TypeScript
class Person {
  // 一行等价于上面的 name/age + constructor
  constructor(public name: string, public age: number) {}

  greet(): string {
    return `Hello, I'm ${this.name}`;
  }
}

访问修饰符

修饰符说明
public默认,任何地方可访问
private仅类内部可访问(包括子类)
protected类内部与子类可访问
readonly只读,初始化后不可修改
TypeScript
class Employee {
  public readonly id: string;
  private salary: number;
  protected department: string;

  constructor(id: string, salary: number, department: string) {
    this.id = id;
    this.salary = salary;
    this.department = department;
  }
}

构造函数

构造函数是类实例化时自动执行的方法:

TypeScript
class Database {
  private connection: string;

  constructor(host: string, port: number) {
    this.connection = `${host}:${port}`;
  }
}

// new 时自动调用 constructor
const db = new Database("localhost", 5432);

注意:派生类构造函数中必须先调用 super(),才能使用 this

类继承

extends 继承

TypeScript
class Animal {
  constructor(protected name: string) {}

  move(distance: number): void {
    console.log(`${this.name} moved ${distance}m`);
  }
}

class Dog extends Animal {
  bark(): void {
    console.log(`${this.name} says: Woof!`);
  }
}

const dog = new Dog("Buddy");
dog.move(10);  // 继承父类方法
dog.bark();    // 自有方法

super 调用

子类构造函数必须先调用 super()

TypeScript
class Manager extends Employee {
  private teamSize: number;

  constructor(id: string, salary: number, department: string, teamSize: number) {
    super(id, salary, department);  // 必须先调用
    this.teamSize = teamSize;
  }

  // 重写父类方法
  getInfo(): string {
    return `${super.getInfo()} Team size: ${this.teamSize}`;
  }
}

方法重写

TypeScript
class Bird extends Animal {
  constructor(name: string) {
    super(name);
  }

  // 重写 move 方法
  move(distance: number): void {
    console.log(`${this.name} flew ${distance}m`);
  }
}

要点总结

  • 类用 class 关键字定义,包含属性、方法、构造函数
  • 构造函数参数前加 public/private/protected 可自动创建属性(参数属性)
  • private 限制最严格,protected 允许子类访问
  • 继承用 extends,子类构造函数必须先调用 super()
  • 方法重写可直接覆盖父类同名方法,可用 super.method() 调用父类版本

📝 发现内容有误?点击此处直接编辑

← 上一篇 TypeScript 接口与实现
下一篇 → TypeScript 模块系统
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库