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

TS2345报错:unknown类型参数不能分配给string类型参数如何解决?

报错原因

TypeScript 4.0及以上版本开启严格类型校验后,catch语句捕获的error默认类型为unknown,而Error构造函数的入参要求为string类型,直接传入unknown类型的值会触发TS2345类型不匹配报错。你之前代码可正常运行,大概率是此前项目的TS版本较低,或未开启useUnknownInCatchVariables严格校验配置。

修复方案

推荐按照TS类型规范做类型收窄处理,也是最安全的修改方式,仅需调整catch块逻辑即可:

catch (error) {
  // 先判断是否为Error实例,取错误信息
  if (error instanceof Error) {
    throw new Error(error.message)
  }
  // 兜底将其他类型的错误转为字符串传入
  throw new Error(String(error))
}

如果仅需要临时快速绕开校验(不推荐长期使用,容易隐藏类型问题),可以使用类型断言:

catch (error) {
  throw new Error(error as string)
}

如果想要全局恢复catch变量为any类型(极不推荐,会降低全局类型安全性),可在项目的tsconfig.json中添加配置:

{
  "compilerOptions": {
    "useUnknownInCatchVariables": false
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:57:02