HarmonyOS 利用promise封装HTTP请求指定了返回类型,then的res可以已经推断出类型catch必须声明,但catch拿不到定义的字段,如何解决

getSmsCode({ phone: this.phone, type: 1 }).then((res) => {
  this.hasSend = true
  closeToast()
  console.info("res", JSON.stringify(res))
  const result = res;
  console.log(JSON.stringify(result))
  setTimeout(() => {
    showToast({ type: "info", info: "短信发送成功" }, this)
  }, 300)
}).catch((e) => { //e 必须指定类型 ,但then的 res 不需要
  closeToast()
  console.info("错误", e)
})

上面方法中调用了自己使用promise封装的请求,已经告诉其返回值为Promise<responseData<T>>,then可以推断出其类型,并可以通过编辑器拿到api字段,但catch一定要声明字段如何解决,已经在request中reject指定了类型,如何才能像then一样通过编辑器提示拿到reject的字段?

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

catch中的异常类型,可以定义成any类型。

1、可以自己强转,这种有class cast exception的风险err as base.BusinessError。

2、简单判断

if(err.code != null && err.message != null){ // xxxx }
分享
微博
QQ
微信
回复
3天前
相关问题
拿不到设备UDID怎么解决
3740浏览 • 1回复 待解决
HarmonyOS catch error问题
309浏览 • 1回复 待解决
http请求报错2300006如何解决
2819浏览 • 1回复 待解决
HarmonyOS rcp通用请求Promise封装
68浏览 • 1回复 待解决
HarmonyOS http请求封装
70浏览 • 1回复 待解决
HarmonyOS http请求封装
70浏览 • 1回复 待解决