SuperAPI AI 工具集

type-safe-monkey-patching

编程与开发

查看项目

更新于 10-16 06:45

技能介绍

用途:本技能用于在 TypeScript 中进行类型安全的猴补丁,即为内置对象(window、document、DOM 元素)在运行时添加属性,并让类型系统知晓这些改动,避免 (obj as any).property 完全丢失类型安全。适用于添加全局变量、给 DOM 元素附加数据、处理依赖全局状态的库(jQuery、D3)、迁移使用猴补丁的 JavaScript 代码,以及在全局对象上保存应用状态。

主要能力与用法:

  1. 接口增强(全局):在 types/global.d.ts 中用 declare global 扩展 Window 接口,声明如 user: User,之后赋值、访问和自动补全均受检查;拼写错误或类型不符会报错。
  2. 带 undefined 的增强:属性可能未设置时声明为 user: User | undefined,强制处理 undefined 或使用可选链。
  3. 自定义类型断言(局部):用 type MyWindow = typeof window & { user: User | undefined } 避免污染全局 Window 类型。
  4. DOM 元素数据:定义 ExtendedElement 接口并做类型断言,或更优地使用 data 属性或 WeakMap<HTMLElement, ...> 存储元素数据。

限制与建议:核心规则是绝不使用 (obj as any).property。为全局属性选择接口增强,为页面级特定数据选择自定义类型断言;除非确定必然存在,否则加 | undefined,并用 JSDoc 注释说明补丁。使用前应评估是否真有必要猴补丁,可考虑模块级状态、上下文/依赖注入、React Context、Vue provide/inject 或 WeakMap 等替代方案。资料中未提供具体安装命令、价格或平台信息。