类是 JavaScript 的运行时结构,TypeScript 为它增加静态契约。本章讨论继承、多态、抽象类、访问控制、Mixin 和装饰器,并强调组合优先与运行时边界。
调用者依赖抽象契约,具体实例在运行时多态分发。
抽象类可以包含:
接口主要描述形状,可以被多个无继承关系的类实现。
选择建议:
TypeScript private 主要由类型系统检查。若必须在运行时阻止外部访问,使用 JavaScript #token:
protected 让子类依赖父类内部状态,容易形成脆弱基类。优先暴露小型受保护方法,而不是大量字段:
这是一种模板方法模式,但扩展点必须明确且稳定。
组合带来的优势:
Mixin 用于组合类行为:
Mixin 的代价:
简单能力优先委托对象或函数组合。
装饰器会在运行时参与类、方法或字段定义。其语义取决于 TypeScript 版本、配置和框架采用的装饰器体系。
概念示例:
先确认装饰器体系 不同框架可能依赖旧版实验性装饰器与元数据。不要把新版标准装饰器示例直接混入旧框架,也不要只看语法相似就假设运行行为一致。
简单策略直接用函数类型,不必都创建类。
返回取消订阅函数,明确资源生命周期。
instanceof 依赖真实原型链:
从 JSON 恢复的普通对象不会自动成为类实例。跨 iframe、重复安装包或多运行上下文时,instanceof 也可能不符合预期。领域状态通常更适合判别字段。
请继续阅读:第9章:大型工程。