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

TypeScript嵌套对象字段获取函数的类型错误问题

解决嵌套对象取值的TypeScript索引错误问题

直接上修复方案,把getOptionLabel函数改成泛型约束的形式,让TypeScript能关联field和value的类型关系:

function getOptionLabel<F extends keyof typeof fields>(
  field: F,
  value: keyof typeof fields[F]['options']
) {
  return fields[field].options[value].label;
}

为什么原来的代码会报错?

你之前的写法里,value的类型是所有fields子项的options键的联合类型,但TypeScript没办法跟踪到field和value之间的对应关系——它不知道你传入的value到底属于哪个field的options集合,所以会认为你可能用了错误的键去索引对应的options对象。

而用泛型F绑定field的类型后,value的类型会被约束为当前field对应的options的键,TypeScript能明确两者的关联,自然就不会报错,同时还能保留IntelliSense的自动提示功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:30:03