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

如何从已定义的类型映射中自动派生对应值类型的判别联合类型?

如何从已定义的类型映射中自动派生对应值类型的判别联合类型?

嘿,刚好TypeScript内置的类型操作就能完美解决这个问题,完全不用手动维护那个冗长的联合类型!

先回顾一下你已经定义好的类型映射:

export type IResourceTypeToFHIRTypeMap = {
  CodeSystem: fhir4.CodeSystem,
  Library: fhir4.Library,
  ObservationDefinition: fhir4.ObservationDefinition,
  PlanDefinition: fhir4.PlanDefinition,
  TestScript: fhir4.TestScript,
  Questionnaire: fhir4.Questionnaire,
  ValueSet: fhir4.ValueSet,
}

要自动生成你想要的联合类型,只需要用索引类型查询和keyof操作符组合起来就行:

// 这一行就自动得到了你想要的所有值类型的联合
export type FHIRResourceUnion = IResourceTypeToFHIRTypeMap[keyof IResourceTypeToFHIRTypeMap];

简单解释下这个写法的逻辑:

  • keyof IResourceTypeToFHIRTypeMap 会生成映射里所有键的联合类型,也就是 "CodeSystem" | "Library" | "ObservationDefinition" | "PlanDefinition" | "TestScript" | "Questionnaire" | "ValueSet"
  • 用这个键联合去索引原类型 IResourceTypeToFHIRTypeMap,就会把每个键对应的值类型取出来,自动组合成你需要的判别联合类型,和你手动写的那一串完全等价!

最棒的是,以后你要是在IResourceTypeToFHIRTypeMap里新增或者修改某个类型,FHIRResourceUnion会自动同步更新,再也不用手动维护两份重复的类型定义了,完美适配你想要避免冗余代码的需求~

备注:内容来源于stack exchange,提问作者Brandon Taylor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 12:59:36