0Pricing
TypeScript Academy · 课时

高级类特性

了解抽象类、访问修饰符和静态成员等高级类特性,编写整洁、模块化的面向对象 TypeScript 代码

高级类特性 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 3 节课。

高级类特性简介

高级类特性简介

TypeScript 提供了多种高级类特性,帮助您编写模块化、可扩展且易于维护的面向对象代码。

在本课程中,您将学习访问修饰符、抽象类、静态成员等内容。

高级类特性 — 插图 1

高级类特性概览

高级类特性简介

TypeScript 提供了多种高级类特性,帮助您编写模块化、可扩展且易于维护的面向对象代码。

在本课程中,您将学习访问修饰符、抽象类、静态成员等内容。

高级类特性 — 插图 2

访问修饰符

访问修饰符

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

  • public:可以在任何位置访问(默认)。
  • private:只能在类内部访问。
  • protected:可以在类及其子类中访问。
class Person {
  public name: string;
  private age: number;
  protected role: string;

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

class Employee extends Person {
  getRole(): string {
    return this.role; // Accessible because it's protected
  }
}

抽象类

抽象类

抽象类用作其他类的蓝图。它们不能直接实例化,并且可以包含抽象方法。

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

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

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

const circle = new Circle(5);
console.log(circle.getArea()); // 78.54

静态成员

静态成员

静态成员属于类本身,而不属于该类的任何实例。您可以使用类名访问它们。

class MathUtils {
  static PI = 3.14;

  static calculateCircleArea(radius: number): number {
    return this.PI * radius ** 2;
  }
}

console.log(MathUtils.PI); // 3.14
console.log(MathUtils.calculateCircleArea(5)); // 78.5

获取器和设置器

获取器和设置器

获取器和设置器允许您控制类中属性的访问或修改方式。

class Person {
  private _name: string;

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

  get name(): string {
    return this._name;
  }

  set name(newName: string) {
    this._name = newName;
  }
}

const person = new Person('Alice');
console.log(person.name); // Alice
person.name = 'Bob';
console.log(person.name); // Bob

只读属性

只读属性

readonly 修饰符确保属性只能在初始化期间设置,之后不能再修改。

class Vehicle {
  readonly make: string;

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

const car = new Vehicle('Toyota');
console.log(car.make); // Toyota
// car.make = 'Honda'; // Error: Cannot assign to 'make' because it is a read-only property.

私有构造函数和受保护构造函数

私有构造函数和受保护构造函数

类可以使用私有或受保护的构造函数来控制实例化的方式和位置。

class Singleton {
  private static instance: Singleton;

  private constructor() {}

  static getInstance(): Singleton {
    if (!this.instance) {
      this.instance = new Singleton();
    }
    return this.instance;
  }
}

const singleton = Singleton.getInstance();
console.log(singleton);

练习任务

练习任务

创建一个带有 protected 构造函数的类,并在子类中扩展它。添加方法,以便在子类中访问受保护的属性。

恭喜您!

恭喜您!

您已经学习了访问修饰符、抽象类、静态成员等高级类特性。练习这些概念,编写简洁高效的面向对象 TypeScript 代码吧!

高级类特性 — 插图 11

常见问题解答

「高级类特性」课时是免费的吗?

是的 — 「高级类特性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 3 节课。

「高级类特性」这节课中我会学到什么?

了解抽象类、访问修饰符和静态成员等高级类特性,编写整洁、模块化的面向对象 TypeScript 代码 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。

「高级类特性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 高级类型收窄
  2. 高级类特性
  3. 条件类型
← 返回 TypeScript Academy