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

TypeScript如何判断API返回值为数组并解决forEach类型错误

解决TypeScript联合类型的forEach属性不存在报错

你的问题出在typeof referralsList === "object"的判断范围太宽泛——数组和返回的错误对象{ message: string }都属于object类型,TypeScript无法确定此时referralsList具体是数组还是错误对象,因此会报错forEach不存在。以下是两种可行的修改方案:

方案一:使用Array.isArray()做类型守卫

这是最直接的解决方式,Array.isArray()是TypeScript认可的原生类型守卫,能精准判断变量是否为数组,自动将类型收窄为SubmissionDetails[]:

if (Array.isArray(referralsList)) {
  referralsList.forEach((item: SubmissionDetails) => {
    item.id = item.submissionID
  })
}

方案二:自定义类型守卫区分错误对象

如果需要明确区分返回的是数组还是错误对象,可以自定义类型守卫函数:

// 定义类型守卫,判断是否为错误消息对象
function isErrorResponse(obj: unknown): obj is { message: string } {
  return typeof obj === 'object' && obj !== null && 'message' in obj;
}

// 使用类型守卫处理返回值
if (!isErrorResponse(referralsList)) {
  referralsList.forEach((item: SubmissionDetails) => {
    item.id = item.submissionID
  })
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:53:10