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

TypeScript如何根据petType参数动态计算getPets函数的返回类型

实现方案

你可以通过 TypeScript 泛型捕获 petType 的字面量类型,实现动态关联参数和返回值的键名,修改后的代码如下:

// 先定义通用的返回类型,方便复用
type GetPetsResult<T extends string> = {
  [K in T]: any[]
} & {
  totalFound: number
}

class YourClass {
  // 泛型T用来捕获传入petType的具体字面量类型
  static async getPets<T extends string>({ petType, inverseOrder }: { petType: T; inverseOrder?: boolean }): Promise<GetPetsResult<T>> {
    const [petsFound, totalFound] = await getPetsByType(petType, inverseOrder);
    // 这里需要加类型断言,因为TS默认无法自动推断动态键对象的精确类型
    return {
      [petType]: petsFound,
      totalFound
    } as GetPetsResult<T>;
  }
}

效果说明

  • 调用 getPets({ petType: 'dogs' }) 时,返回类型会自动推导为 { dogs: any[]; totalFound: number }
  • 调用 getPets({ petType: 'cats' }) 时,返回类型会自动推导为 { cats: any[]; totalFound: number }
  • 后续访问返回值时,如果访问和传入petType不匹配的键,TS会直接抛出类型错误,完全解决原有索引类型无法校验的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:03