nestia
用 TypeScript 类型系统驱动 NestJS:一次声明,SDK、Swagger、E2E 测试全搞定
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 TypeScript 类型系统驱动 NestJS:一次声明,SDK、Swagger、E2E 测试全搞定
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你在用 NestJS 开发 API 时,是否曾被繁琐的 class-validator 校验注解折磨得头皮发麻?每个字段写三遍注解、运行时校验性能差到哭、API 文档还要手动维护 Swagger——这一套流程下来,开发效率大打折扣。Nestia 正是为解决这些痛点而生的。
Nestia 由韩国开发者 Jeongho Nam(GitHub @samchon)主导开发,是一套针对 NestJS 的 TypeScript 工具库生态。它的核心理念只有一个:用纯 TypeScript 类型声明替代一切运行时配置,让编译器替你做原本需要手工完成的重复劳动。Samchon 同时维护着 typia(5824★)——一个基于 TypeScript Compiler API 的高性能运行时校验库,Nestia 正是建立在 typia 的基础之上。

图1:Nestia 作者 Jeongho Nam
打个比方:NestJS 是一个功能齐全的厨房,Nestia 则是那套让你随手就能精准拿捏火候的智能厨具——不需要你在做菜的同时还要盯着温度计,它自动帮你搞定一切。
Nestia 由 8 个子包组成,每个包各司其职:@nestia/core 提供超快的类型校验装饰器(如 @TypedBody、@TypedQuery、@TypedParam),底层依赖 typia 实现,运行时校验速度比 class-validator 快 20000 倍;@nestia/sdk 自动从控制器生成 TypeScript SDK 客户端代码,客户端只需调用 typed fetch 函数即可,后端接口变更时 SDK 自动同步;@nestia/fetcher 是 SDK 的网络请求层,封装了带类型安全的 fetch 调用;@nestia/editor 是云端 Swagger Editor,内置在线 TypeScript 编辑器,可直接在浏览器中调试 API;@nestia/cli 是命令行工具,负责引导初始化、生成 SDK 等操作;@nestia/migrate 帮助将已有的 swagger/OpenAPI 规范迁移到 NestJS 项目。
尤其值得关注的是,Nestia 专门为 AI Chatbot 开发提供了完整的工作流。通过 @nestia/sdk 生成的 Swagger 文档可以直接接入 LLM(配合 @agentica 使用),LLM 能够准确理解 API 的请求/响应结构,实现可靠的 Function Calling。这意味着你用 NestJS 构建的后端 API,可以无缝被 AI Agent 调用——Samchon 将这个能力描述为「AI Chatbot Development」的核心支撑。
上手门槛很低。如果你已经有 NestJS 项目,只需一行 npx nestia init 完成初始化,在控制器方法上加 @TypedBody() 替代原来的 @Body(),Nestia 就会在编译时自动完成类型推导和验证。SDK 生成后,前端或 AI 客户端可以像 tRPC 那样直接调用带类型的 API 函数,完全告别手动维护 API 文档的苦差事。
目前 Nestia 没有提供 Dockerfile 或 docker-compose,不支持一键容器化部署,这与其「库工具集」的定位一致——它不是一个独立服务,而是需要集成到已有 NestJS 项目中使用。
整体来看,Nestia 代表了一个值得关注的趋势:让 TypeScript 类型系统承担更多职责,把重复劳动压缩到编译阶段。作者 Samchon 的整个 TypeScript 工具链(typia + nestia + tgrid)都遵循这一理念。对于已经在用 NestJS 的团队,Nestia 能显著提升开发效率和运行时性能;对于想构建 AI Agent 可调用 API 的开发者,它的 SDK + Swagger 自动化能力是目前的稀缺资源。