Z14172803154 2024-12-06 10:19 采纳率: 66.7%
浏览 138
已结题

【求解决】鸿蒙代码报错:arkts-no-untyped-obj-literals

import RecordItemModel from '../model/RecordItemModel'
import RecordModel from '../model/RecordModel'
import DateUtil from '../utils/DateUtil'
import KeepInfo from '../viewmodel/KeppInfo'
import RecordVO from '../viewmodel/RecordVO'
import Logger from '../utils/Logger'
import RecordPO from '../common/table/RecordPO'

class KeepService {
  /*
  增
   */
  //参数1:运动id,参数2:运动数量
  insert(keepId: number, amount: number) {
    let createTime = (AppStorage.Get('selectedDate') || DateUtil.beginTimeOfDay(new Date())) as number
   return RecordModel.insert({
     keepId: keepId,
     amount: amount,
     createTime: createTime,
     successAmount: 0
   })
  }

  /*
    删
   */
  deleteById(id: number) {
    return RecordModel.delete(id)
  }

  /*
  改
   */
  update(record: RecordVO) {
    return RecordModel.update({
      id: record.id,
      keepId: record.keepId,
      amount: record.amount,
      successAmount: record.successAmount,
      createTime: record.createTime
    }, record.id)
  }

  /*
  查所有
 */
  async  selectAllRecord(): Promise<RecordVO[]> {
    let rps = await RecordModel.queryAll()
    return rps.map(rp => {
      //将RecordPO对象转换成RecordVO
      let rv:RecordVO = {
        id: rp.id,
        keepId: rp.keepId,
        amount: rp.amount,
        successAmount: rp.successAmount,
        createTime: rp.createTime} as RecordVO
      //通过ID查询RecordItem对象
      rv.recordItem = RecordItemModel.getById(rp.keepId)
      //计算卡路里
      rv.calorie = rp.amount * rv.recordItem.calorie

      return rv;
    })
  }

  /*
  根据日期查询
   */
  async selectRecordByDate(date: number): Promise<RecordVO[]> {
    let rps = await RecordModel.queryByDate(date)

    return rps.map(rp => {
      let rv:RecordVO = {
        id: rp.id, 
        keepId: rp.keepId, 
        amount: rp.amount, 
        successAmount: rp.successAmount, 
        createTime: rp.createTime} as RecordVO

      rv.recordItem = RecordItemModel.getById(rp.keepId)

      rv.calorie = rp.amount * rv.recordItem.calorie

      return rv;
    })
  }

  calculateKeepInfo(records: RecordVO[]):KeepInfo {
    let info = new KeepInfo()
    //如果RecordVO对象数组为空,不执行操作,直接返回KeepInfo对象
    if (!records || records.length <= 0) {
      return info
    }
    //当日总任务个数
    info.task = records.length

    records.forEach(rv => {
      //如果完成任务个数 = 当然任务个数,表示当天所有任务都已经完成
      if(rv.amount !== 0 && rv.successAmount === rv.amount) {
        info.successTask += 1
      }
      info.expend += rv.calorie
      info.day = rv.createTime
    })
    //如果总任务个数=已完成任务个数,将是否完成当天任务属性赋值为true
    if (info.task === info.successTask && info.task !== 0) {
      info.isSuccess = true
    }

    Logger.debug(info.task + '/' + info.successTask + ',任务时间:' + info.day + ',总任务/已完成任务')

    return info

  }
}

let keepService = new KeepService();

export default keepService as KeepService;

代码在将RecordPO对象转换成RecordVO那里出现了Object literal must correspond to some explicitly declared class or interface (arkts-no-untyped-obj-literals)

img

  • 写回答

2条回答 默认 最新

  • Z14172803154 2025-03-11 10:42
    关注

    后面发现只要把构造函数去掉就好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月19日
  • 已采纳回答 3月11日
  • 创建了问题 12月6日