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

如何让TSOA忽略Swagger中生成的Pick/Partial/Omit类型Schema?

解决TSOA生成Pick/Partial/Omit冗余Schema的问题

方法1:用@Hidden()装饰器标记工具类型

在定义Pick/Partial/Omit这类工具类型时,给对应的类型加上@Hidden()装饰器,让TSOA跳过该类型的Schema生成。

示例代码:

import { Hidden } from 'tsoa';

@Hidden()
type PickUserContact = Pick<User, 'email' | 'phoneNumbers'>;

// 路由中使用该类型时,不会生成PickUserContact对应的Schema

方法2:在TSOA配置文件中批量排除

修改tsoa.json(或tsoa.config.ts),添加ignore字段,用正则匹配自动生成的工具类型命名(比如Pick_、Partial_、Omit_前缀),批量忽略这类冗余Schema:

{
  "swagger": {
    "outputDirectory": "./dist",
    "entryFile": "./src/server.ts"
  },
  "routes": {
    "routesDir": "./dist/routes"
  },
  "ignore": [
    "Pick_.*",
    "Partial_.*",
    "Omit_.*"
  ]
}

方法3:内联使用工具类型(避免单独命名)

如果不需要复用工具类型,直接在路由的参数或返回值中内联使用Pick/Partial/Omit,TSOA会直接基于原类型生成合并后的Schema,不会额外生成工具类型对应的独立Schema。

示例代码:

// 不要单独定义PartialUser类型
// type PartialUser = Partial<User>;

// 直接在路由中内联使用
@Patch('/users/:id')
public async updateUser(
  @Path() id: string,
  @Body() userData: Partial<User>
): Promise<User> {
  // 业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:24:52