Conversion of type ‘void & Promise<UploadTask>‘ to type ‘UploadTask‘ may be a mistake because neithe

Conversion of type 'void & Promise<UploadTask>' to type 'UploadTask' may be a mistake because neither type sufficiently overlaps with the other. Type 'void & Promise<UploadTask>' is missing the following properties from type 'UploadTask': on, off, remove, delete <ArkTSCheck>

这个错误提示说,您试图将 void & Promise<UploadTask> 类型的值转换为 UploadTask 类型,但这两种类型的重叠不足,也就是说它们的属性不匹配。void & Promise<UploadTask> 类型缺少 UploadTask 类型所具有的 onoffremovedelete 这些属性,所以这样的类型转换可能是不正确的。

您需要检查代码中进行这种类型转换的地方,可能需要调整代码逻辑,以避免这种不恰当的类型转换,或者找到正确的方式来处理这两种不同类型的值。

            const task = await request.uploadFile(context, {
              url: 'https://hmajax.itheima.net/api/uploadimg',
              header: {
                'content-type': 'multipart/form-data'
              },
              method: http.RequestMethod.POST,
              data: [],
              files: [{
                filename: imgName,
                name: 'img',
                uri: `internal://cache/${imgName}`,
                type: imgName?.split('.').pop()
              }]
            }) as request.UploadTask
            task.on('headerReceive', (res: object) => {
              const IRes = res as IUploadRes
              const imgUrl = JSON.parse(IRes.body) as IBody
              //AlertDialog.show({ message: imgUrl.url })
              this.avatar = imgUrl.data.url
            })

这段代码中的错误正如之前的错误提示所说,您将 await request.uploadFile 的结果强制转换为 request.UploadTask 类型是不正确的,因为实际返回的类型 void & Promise<UploadTask> 与 request.UploadTask 类型不完全匹配,导致后续使用 task.on 时出现错误,因为实际返回的类型中没有 on 方法。

您可能需要检查 request.uploadFile 方法的正确返回类型和使用方式,也许应该通过 then 方法来处理其成功的结果。

            request.uploadFile(context, {
              url: 'https://hmajax.itheima.net/api/uploadimg',
              header: {
                'content-type': 'multipart/form-data'
              },
              method: http.RequestMethod.POST,
              data: [],
              files: [{
                filename: imgName,
                name: 'img',
                uri: `internal://cache/${imgName}`,
                type: imgName?.split('.').pop()
              }]
            })
              .then((task) => {
                task.on('headerReceive', (res: object) => {
                  const IRes = res as IUploadRes
                  const imgUrl = JSON.parse(IRes.body) as IBody
                  //AlertDialog.show({ message: imgUrl.url })
                  this.avatar = imgUrl.data.url
              })
            })

这样也是完成了,但是还是灭有用 await的方法 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值