te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Property 'name' does not exist on type 'unknown'.ts(2339) - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Property 'name' does not exist on type 'unknown'.ts(2339) - Stack Overflow

programmeradmin3浏览0评论

I am trying to return an new object with a name property. But it keeps giving me this error, the code pile without any problem though. I am using Angular 9 and AnfularFirestore to access the Firebase

this.db
  .collection('availableExercises')
  .snapshotChanges()
  .pipe(
    map(docArray => {
        return docArray.map(doc => {
            return {
                id: doc.payload.doc.id,
                name: doc.payload.doc.data().name,
                duration: doc.payload.doc.data().duration,
                calories: doc.payload.doc.data().calories
            };
        });
    })
  ).subscribe((exercises: Exercise[]) => {
      this.availableExercises = exercises;
      this.exercisesChanged.next([...this.availableExercises]);
  });

Here is the interface tha I am using for Exercise

export interface Exercise{
  id: string;
  name: string;
  duration: number;
  calories: number;
  date?: Date;
  state?: 'pleted' | 'cancelled' | null;
}

I am trying to return an new object with a name property. But it keeps giving me this error, the code pile without any problem though. I am using Angular 9 and AnfularFirestore to access the Firebase

this.db
  .collection('availableExercises')
  .snapshotChanges()
  .pipe(
    map(docArray => {
        return docArray.map(doc => {
            return {
                id: doc.payload.doc.id,
                name: doc.payload.doc.data().name,
                duration: doc.payload.doc.data().duration,
                calories: doc.payload.doc.data().calories
            };
        });
    })
  ).subscribe((exercises: Exercise[]) => {
      this.availableExercises = exercises;
      this.exercisesChanged.next([...this.availableExercises]);
  });

Here is the interface tha I am using for Exercise

export interface Exercise{
  id: string;
  name: string;
  duration: number;
  calories: number;
  date?: Date;
  state?: 'pleted' | 'cancelled' | null;
}
Share Improve this question edited May 13, 2020 at 16:03 user 7,6043 gold badges16 silver badges46 bronze badges asked May 13, 2020 at 14:48 luccasluccas 831 gold badge2 silver badges4 bronze badges 3
  • What is that freestanding map function? Where do you get the error you've mentioned? – T.J. Crowder Commented May 13, 2020 at 14:54
  • map inside pipe is RxJS map operator – Alexander Staroselsky Commented May 13, 2020 at 14:59
  • How are you importing Exercise and what line exactly is it erroring on name: doc.payload.doc.data().name,? – Alexander Staroselsky Commented May 13, 2020 at 15:00
Add a ment  | 

1 Answer 1

Reset to default 14

Most probably it's a TS Lint error. One workaround would be to use square brackets to access properties instead of the dot operator. Try the following

return docArray.map(doc => {
  return ({
    id: doc.payload.doc['id'],
    name: doc.payload.doc.data()['name'],
    duration: doc.payload.doc.data()['duration'],
    calories: doc.payload.doc.data()['calories']
  });
});

If you still get the error, try replacing the dot operators up the access chain.

Nevertheless, the generated JS should be valid regardless of this error.

发布评论

评论列表(0)

  1. 暂无评论