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

TypeScript泛型函数中EntityType['id']索引报错的解决方法

问题解决方法

报错原因

第二个函数的泛型EntityType仅设置了默认值为Q,但TypeScript允许传入任何类型作为EntityType参数——哪怕这个类型没有id属性。因此TypeScript无法保证EntityType一定包含id键,就会抛出Type 'id' cannot be used to index type 'EntityType'的错误。

解决方案

给泛型EntityType添加类型约束,强制要求它必须包含id属性。根据你的场景(Q的id是number类型),可以这样修改:

async function c<EntityType extends { id: number } = Q>(ids: EntityType["id"][]) {
}

如果未来id的类型可能扩展(比如新增id为string的类),也可以用更灵活的约束:

async function c<EntityType extends { id: unknown } = Q>(ids: EntityType["id"][]) {
}

效果验证

修改后:

  • 默认调用时,ids的hover提示会正确显示为(parameter) ids: number[],和第一个函数的预期一致;
  • 当传入符合约束的自定义类型时(比如{ id: string }),ids的类型会自动推导为string[],保持类型安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:15:39