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

如何在TypeScript中关联函数参数值与输出类型的属性名?

TypeScript中关联函数参数值与返回类型属性名的实现方法

完全可以实现,你只需要给函数添加额外的泛型参数约束传入的key值,就能让TypeScript类型系统识别参数值与返回类型属性名的关联。

修改后的代码如下:

function withZero<T extends {}, K extends PropertyKey>(input: T, key: K) {
    return {...input, [key]: 0} as T & Record<K, number>;
}

关键说明:

  • 新增泛型K extends PropertyKey,用来捕获传入key的具体字面量类型(比如调用时传入的"bar"会被识别为"bar"类型,而非宽泛的string)
  • 返回类型T & Record<K, number>明确表示:返回对象既包含原对象T的所有属性,又新增了一个属性名为K、类型为number的属性
  • 这里的类型断言as T & Record<K, number>是必要的——因为TypeScript对动态属性的对象扩展语法无法自动推导出精确的返回类型,需要手动指明

效果验证:

当调用withZero({foo: "Hello"}, "bar")时,TypeScript会自动推导返回类型为{foo: string} & {bar: number},你可以正常访问返回对象的属性,且类型检查完全生效:

const result = withZero({foo: "Hello"}, "bar");
result.foo; // 类型为string
result.bar; // 类型为number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:52:09