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

TypeScript泛型T设keyof foo默认值仍提示无法索引foo类型如何解决

报错原因

泛型参数的默认值不等于类型约束,你当前只给T设置了默认值为keyof foo,但没有限制T的取值范围,TS无法保证所有情况下T都是foo的合法索引,因此抛出报错。

修复方案

给泛型T加上extends keyof foo的类型约束即可,修改后的代码如下:

type foo = {
    asd:""
}

// 新增 extends 约束限制T的取值范围
interface FOOS<T extends keyof foo = keyof foo> extends foo {
    copy(key: T): foo[T]
}

说明

extends keyof foo会强制所有传入的T都必须是foo的合法键类型,不管是显式传入的泛型参数还是默认值,都满足索引foo的要求,报错自然就消除了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:27:00