TypeScript 的 class 是对 JavaScript class 的增强而非替换,通过显式类型标注、访问修饰符、接口实现、继承和抽象类等机制强化类型安全与封装性。

JS 的 class 语法在 TypeScript 中不是被替换,而是被“增强”——保留原有结构,叠加类型约束。核心是:用 class 关键字写类,再在属性、参数、返回值等位置显式标注类型。
属性必须声明类型或初始化
TypeScript 要求类中每个实例属性都要有明确类型归属。不能像纯 JS 那样在构造函数里动态挂载。
- 推荐方式:在类体顶层声明并标注类型(TS 推荐)
name: string;
age: number; - 也可在构造函数中用参数属性简化(自动声明+赋值)
constructor(public name: string, private id: number) { } - 若未初始化又没设默认值,且启用了
strictPropertyInitialization,会报错;此时可用非空断言!(如email!: string),但需确保运行时一定赋值
构造函数参数和方法要标注完整类型
构造函数本身不是类型载体,它的参数和内部逻辑才需要类型控制。
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
- 参数带类型,如
constructor(name: string, age: number) - 方法必须注明参数类型和返回值类型,void 表示无返回值
greet(msg: string): string { return `${this.name} says ${msg}`; }
log(): void { console.log(this.name); } - 不写返回类型时,TS 会尝试推导,但复杂逻辑下易出错,建议显式写出
访问修饰符强化封装语义
TS 在 JS 原有 class 基础上加入 public/private/protected,不只是注释,而是编译期检查。
-
public(默认):任何地方可访问 -
private:仅类内部可读写,子类也不行 -
protected:类自身及子类可访问,外部不可 - 静态成员加
static,属于类而非实例,调用时用ClassName.prop
类可实现接口或继承其他类
TS 类常与接口配合,实现契约式开发。
- 用
implements实现一个或多个接口,强制包含指定属性和方法
class User implements Person, Logger { ... } - 用
extends继承父类,复用属性和方法,子类构造函数中必须调用super() - 抽象类用
abstract修饰,可含抽象方法(无实现,子类必须重写)

















