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

如何在TypeScript中收窄keyof对应函数返回值为具体键值类型?

TypeScript函数返回值类型收窄问题

原函数定义如下:

const foo = <T extends object>(
  option: T,
  key: keyof T,
) => {
  return option[key];
};

当前调用该函数时,返回值类型会被推断为所有键对应值的联合类型。比如下面的示例中,x和y的类型都会被推断为number | string,而非对应键的具体类型:

const option = {a: 1, b: 'c'}

const x = foo(option,'a')
const y = foo(option,'b')

要让返回值类型收窄为对应键的具体类型,只需给函数增加一个额外的泛型参数K,将其约束为keyof T,同时把key的类型指定为K,让返回值明确对应T[K]即可。修改后的函数如下:

const foo = <T extends object, K extends keyof T>(
  option: T,
  key: K,
) => option[key];

此时再调用函数,x的类型会被正确推断为number,y的类型为string,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:04:51