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

如何将TypeScript字符串联合类型的取值映射为对象类型的键

解法

你可以直接用TypeScript内置的Record工具类实现,一行代码就能搞定:

// 原始联合类型
type Fruit = 'apple' | 'banana' | 'pear'

// 生成目标对象类型
type FruitObject = Record<Fruit, string>

这个FruitObject和你手动写的效果完全一致,所有键都是Fruit的联合成员,值类型都是string。


如果你想自己实现底层逻辑,也可以写自定义映射类型,用in关键字遍历联合类型的所有成员作为键:

type FruitObject = {
  [Key in Fruit]: string
}

如果需要复用这个逻辑处理不同的联合类型和值类型,可以封装通用工具类型:

// 通用工具类型,第一个参数是键的联合类型,第二个参数是值的类型
type UnionToObj<Key extends string | number | symbol, Value> = {
  [K in Key]: Value
}

// 使用示例
type FruitObject = UnionToObj<Fruit, string>
type NumberKeyObj = UnionToObj<1 | 2 | 3, boolean>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:03