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

如何定义TypeScript通用KeyValuePair泛型实现对象键值类型绑定与自动补全

TypeScript 通用键值对匹配类型实现

实现代码

type KeyValuePair<T> = {
  [K in keyof T]: {
    key: K
    value: T[K]
  }
}[keyof T]

实现逻辑

通过TypeScript映射类型遍历传入的对象类型T的所有键,为每个键单独生成绑定了对应值类型的键值对结构,最后通过索引访问[keyof T]将所有单键的键值对结构合并为联合类型,即可达成需求效果。

效果验证

// 测试用对象类型
type User = { id: number, userName: string }
let userKeyValuePair: KeyValuePair<User>

// 合法赋值:key为id时value必须是number
userKeyValuePair = { key: 'id', value: 687 }
// 合法赋值:key为userName时value必须是string
userKeyValuePair = { key: 'userName', value: '测试用户名' }

// 会触发类型错误:key为id时value赋值字符串不符合要求
userKeyValuePair = { key: 'id', value: 'string' }

特性说明

  • 支持key自动补全:输入key字段值时,编辑器会自动提示传入类型的所有合法键名
  • 类型强校验:value类型会和当前选择的key对应类型强绑定,不匹配时会直接触发类型错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:45:03