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

如何基于TypeScript现有类型生成键值关联的联合类型?

基于已有TypeScript类型动态生成关联联合类型

首先定义原类型:

type ListingFilterBy = {
  season?: string[];
  name?: string;
  isOnMarket?: boolean;
};

要动态生成与原类型键关联的FilterAction联合类型,无需手动枚举每个键,可以通过映射类型+索引访问类型实现:

type FilterAction = {
  [K in keyof ListingFilterBy]: {
    key: K;
    value: ListingFilterBy[K];
  }
}[keyof ListingFilterBy];

实现说明

  • [K in keyof ListingFilterBy]:遍历ListingFilterBy的所有键,为每个键生成对应的对象类型
  • 每个对象类型中,key的类型是当前键名K,value的类型是原类型中该键对应的类型ListingFilterBy[K]
  • 最后通过[keyof ListingFilterBy]索引整个映射类型,将所有生成的对象类型合并为联合类型

效果验证

生成的FilterAction与手动编写的完全等价,并且当ListingFilterBy的结构(键名或对应类型)修改时,FilterAction会自动同步更新,无需手动维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:33:10