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

如何实现TypeScript Reverser泛型,翻转常量Record的键值类型

TypeScript 常量Record键值翻转实现方案

完全可以实现,你可以通过TypeScript 4.1及以上版本支持的映射类型键重映射语法完成需求,具体实现如下:

核心实现代码

// 泛型约束保证原对象的键和值都是合法的对象键类型
type Reverser<T extends Record<PropertyKey, PropertyKey>> = {
  [K in keyof T as T[K]]: K
}

效果验证

对你给出的示例直接使用即可得到预期类型:

const VALUE = {
    field1: "fieldA",
    field2: "fieldB"
} as const

type Reversed = Reverser<typeof VALUE>
// 实际推导结果和你期望完全一致:
// type Reversed = {
//     fieldA: "field1";
//     fieldB: "field2";
// } 

注意事项

  • 必须为原对象添加as const声明,才能让TypeScript获取到精确的字面量类型,否则原对象的属性值会被推导为宽泛的string类型,最终翻转结果会变成{[x: string]: "field1" | "field2"},无法满足需求
  • 你提到的属性值不唯一的问题确实存在,如果原对象有多个属性对应同一个值,翻转时后出现的属性会覆盖先出现的属性的映射关系,因此该实现仅适用于你明确保证属性值唯一的场景
  • 原对象的属性值必须是可以作为对象键的类型(string、number、symbol),不符合该约束的类型会触发TS编译报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:39:01