@aedge-io/typed-clone
一个类型安全、高性能且可扩展的JavaScript/TypeScript深拷贝库。
安装使用
复制下面这段提示词发给你的 AI(Claude / Cursor / TRAE / Codex / WorkBuddy 等),它会自动帮你完成安装:
帮我安装这个 AI Skill:@aedge-io/typed-clone。 它的用途是:一个类型安全、高性能且可扩展的JavaScript/TypeScript深拷贝库。 完整的 Skill 内容见:https://321skill.com/skills/aedge-io-typed-clone/raw/index.md 请读取该页面内容,如果是 SKILL.md 格式直接安装,如果是 README 提炼核心 prompt 后安装。
提示词包含完整的 Skill 内容链接,AI 读取后即可完成安装。你也可以 查看完整内容 确认无误。
使用示例
“我需要深度复制这个包含Map、Set和自定义`User`类的状态对象,用于创建撤销/重做的快照。”,它会建议你使用`typed-clone`库,并展示如何为`User`类实现`[Clone]`协议,然后调用`clone(state)`来获得一个类型正确且独立的副本。
介绍
这个Skill解决了在JavaScript/TypeScript开发中,进行复杂对象深拷贝时遇到的类型丢失、性能不佳和无法克隆自定义类型的问题。在实际开发中,开发者经常需要复制包含Map、Set、Date、TypedArray甚至循环引用的复杂数据结构,而内置的JSON.parse(JSON.stringify())或structuredClone要么有类型限制,要么无法处理函数或自定义类。
使用方式很简单,你只需要通过npm或JSR安装@aedge-io/typed-clone包,然后导入clone函数即可。之后就可以通过调用clone(yourObject)来获得一个类型安全的深拷贝副本。对于自定义类,你可以通过实现一个简单的Symbol协议([Clone]方法)来让库知道如何克隆它们,从而实现无缝集成。
它非常适合需要处理异构、复杂数据结构的TypeScript/JavaScript开发者,尤其是那些在项目中已经使用了大量自定义类、需要保持引用透明性(referential transparency)或希望避免手写繁琐克隆逻辑的团队。例如,在状态管理、数据序列化/反序列化、或者需要创建数据快照的场景中,这个库能提供可靠的基础实现。
建议在项目早期就引入此库,以统一数据克隆的规范。需要注意的是,它主要依赖运行时的structuredClone作为后备方案,因此要求环境(Node.js ≥17, Deno ≥1.14, Bun ≥1.0.0 或支持structuredClone的浏览器)满足此条件。对于无法克隆的类型(如函数),它会明确地返回Ref<T>类型,提醒开发者这是一个引用,需要在代码中特殊处理。
常见问题
typed-clone和JSON.parse(JSON.stringify())有什么区别?
typed-clone能正确处理函数、Symbol、循环引用、TypedArray和自定义类实例,并保持类型安全,而JSON方法会丢失这些信息或抛出错误。
如何克隆一个自定义的类实例?
在你的类上实现`[Clone]`方法(使用库提供的`Clone`符号),该方法返回一个新的实例即可。
给 AI 助手的安装指引
如果你的 AI 编程助手(Claude Code、Cursor、TRAE 等)能看到这个页面,把下面这段发给它即可自动完成安装:
请访问 https://321skill.com/skills/aedge-io-typed-clone/raw/index.md 读取 @aedge-io/typed-clone 的原始 Skill 定义(Markdown 格式),按其中说明在我的环境里完成安装和配置。
AI 可直接读取的原始 Markdown 地址:/skills/aedge-io-typed-clone/raw/index.md(查看排版版本)