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

TypeScript 5中如何使用const泛型键创建含指定键的对象

TypeScript 5.x动态对象构建函数类型错误解决方法

你的问题源于TypeScript对计算属性的默认类型推断:当使用[key]: "wow"这种计算属性语法时,TypeScript会把对象的索引类型推断为string,而非你通过const Key指定的具体字面量类型,因此返回值{ [x: string]: string }无法匹配Record<Key, "wow">的类型要求。

以下是两种可靠的解决方式:

方法一:类型断言(简洁直接)

直接将返回值断言为目标类型,由于你已经用const约束了Key为字面量类型,这个断言是完全安全的:

function testFunction<const Key extends string>(key: Key): Record<Key, "wow"> {
  return { [key]: "wow" } as Record<Key, "wow">;
}

方法二:利用as const强化类型推断

通过as const让TypeScript保留对象的字面量类型特征,再转换为目标类型:

function testFunction<const Key extends string>(key: Key): Record<Key, "wow"> {
  return { [key]: "wow" } as const as Record<Key, "wow">;
}

验证效果:调用函数后,变量类型会符合你的预期:

// const result: { "test": "wow" }
const result = testFunction("test");

两种方法都能保证result的类型是具体的字面量键值对,而非宽泛的字符串索引类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:22:39