Daily Tech Briefing
AI 科技速览

每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。

typestack

class-transformer

7.3K+0/dayTypeScript去 GitHub
分享
AI 中文解读
class-transformer 是一个基于装饰器的 TypeScript 工具库,专门解决前后端开发中一个非常常见的痛点:当你从 API 获取到 JSON 数据(也就是普通的 JavaScript 对象)时,它只是一个“裸数据”,没有类型、没有方法、没有验证规则。而 class-transformer 可以帮你把这些“裸对象”自动转换成你定义好的类实例,反过来也能把类实例转回普通对象,方便传输或存储。简单说,它就是帮你打通了“数据”和“类”之间的桥梁,让你在代码里既能享受 TypeScript 的类型安全,又能轻松处理来自网络或数据库的原始数据。 它的技术亮点在于完全基于装饰器,使用起来非常优雅。你只需要在类的属性上加上 @Expose、@Transform 或 @Type 这样的装饰器,就能控制哪些属性要暴露、如何转换、如何嵌套处理。比如你有一个 User 类,里面包含一个 Date 类型的 createdAt 属性,class-transformer 会自动把字符串转成 Date 对象。它还支持属性重命名、忽略某些字段、按操作类型(如序列化或反序列化)选择性暴露属性,功能非常灵活。而且它本身是用 TypeScript 写的,类型推导很完善,和 Angular、NestJS 等框架配合得天衣无缝。 这个项目特别适合后端开发者(比如用 NestJS 或 Express 做 REST API 时,需要把数据库查出来的数据转成响应对象)、前端开发者(比如从接口拿到数据后,希望直接得到有方法的类实例),以及任何需要在 JSON 和类之间频繁转换的场景。比如你在做表单验证、数据脱敏、API 响应格式化时,它都能大幅减少样板代码。 上手难度很低,你只要会 TypeScript 的基础语法和装饰器的基本用法就能用。安装后,核心就是几个函数:plainToInstance 把普通对象转成类实例,instanceToPlain 把类实例转回普通对象,serialize 和 deserialize 用于 JSON 字符串的序列化。官方文档示例清晰,社区也很活跃,遇到问题基本都能搜到答案。对于已经使用 TypeScript 的团队来说,class-transformer 几乎是一个零学习成本的必备工具。
Decorator-based transformation, serialization, and deserialization between objects and classes.