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
相关产品推荐
相关产品推荐

