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

TypeScript报错:Type 'keyof T'无法索引'(keyof T)[]'类型(2536)求助

解决TypeScript报错:Type 'keyof T' cannot be used to index type '(keyof T)[]'

这个报错的核心原因是参数名重复导致的作用域覆盖,和分配性完全无关。

看你的fun3函数:外部函数接收的参数是arg: T(符合A类型的对象),但返回的箭头函数里又用了同名参数arg: (keyof T)[]。在箭头函数内部,arg会优先指向这个数组参数,而不是外部的T类型对象。

当你写arg[key]()时,TypeScript认为你是在用keyof T类型的键去索引数组(keyof T)[]——但数组只能用数字类型索引,自然触发类型错误。

修复方法很简单,把返回函数的参数名改成别的,比如keys,让内部能正确引用外部的arg对象:

type A = { [key: string]: () => 123 }

function fun3<T extends A>(arg: T) {
    return (keys: (keyof T)[]) => keys.map((key) => arg[key]()); 
}

之前的fun和fun2没报错,是因为它们的返回函数里只是接收参数,没有尝试用参数去做索引操作,所以没暴露这个作用域覆盖的问题。

内容的提问来源于stack exchange,提问作者Page not found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:38