You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TypeScript Interface程序化生成Yup Schema?

TypeScript Interface 转 Yup Schema 的程序化方案

当然有现成工具可以实现自动转换,不用手动编写Schema:

1. typescript-to-yup 库(最常用)

这是专门做TS类型到Yup Schema转换的工具,支持大部分常见TS类型,包括可选属性、嵌套接口、联合类型等。

步骤:

  • 安装依赖:
    npm install typescript-to-yup --save-dev
    
  • 定义你的TS接口:
    interface User {
      name: string;
      age: number;
      email?: string;
      address: {
        street: string;
        city: string;
      };
    }
    
  • 生成Schema:
    import { generateSchema } from 'typescript-to-yup';
    
    // 可以添加自定义验证规则,比如给age设置最小值
    const userSchema = generateSchema<User>({
      age: {
        min: { value: 18, message: '年龄不能小于18岁' }
      }
    });
    
  • 验证使用:
    const testUser = { name: '张三', age: 22, address: { street: '朝阳路', city: '北京' } };
    userSchema.validate(testUser)
      .then(() => console.log('验证通过'))
      .catch(err => console.error('验证失败:', err.errors));
    

注意:

  • 泛型、交叉类型这类复杂TS语法,工具的支持有限,可能需要手动补充规则;
  • 自定义配置可以覆盖默认的转换逻辑,满足特定字段的验证需求。

2. 基于TS Compiler API 自定义脚本

如果需要完全定制化的转换逻辑,可以直接用TypeScript的Compiler API解析接口的AST,然后生成对应的Yup代码。这种方式灵活性拉满,但需要自己写解析逻辑,适合有特殊需求的场景。

大致思路:

  • 用typescript包的API读取TS文件,解析出接口的属性和类型信息;
  • 把每个属性的TS类型映射成对应的Yup方法(比如string类型对应yup.string());
  • 将生成的Schema代码输出为文件,直接在项目中引用。

最后提醒

不管用哪种工具,转换后都要测试下生成的Schema是否符合预期,尤其是涉及复杂类型的场景;另外,部分工具对最新TS语法的支持可能有延迟,选版本时注意兼容性。

内容的提问来源于stack exchange,提问作者Kostya Tresko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:25:34