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
2024-12-23 16:20:02
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

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

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

2、简单判断

if(err.code != null && err.message != null){ // xxxx }
分享
微博
QQ
微信
回复
2024-12-23 18:30:35
相关问题
http请求报错2300006如何解决
3266浏览 • 1回复 待解决
HarmonyOS catch error问题
484浏览 • 1回复 待解决
拿不到设备UDID怎么解决
4161浏览 • 1回复 待解决
HarmonyOS rcp通用请求Promise封装
602浏览 • 1回复 待解决
HarmonyOS http请求封装
501浏览 • 1回复 待解决
HarmonyOS http请求封装
400浏览 • 1回复 待解决
HarmonyOS http网络请求封装Demo
426浏览 • 1回复 待解决
HarmonyOS try catch是异步执行吗?
365浏览 • 1回复 待解决
HarmonyOS POST请求,服务端拿不到数据
733浏览 • 1回复 待解决