属性 在来自订阅的对象类型上不存在

property does not exists on type Object from subscribe

我正在使用 forkJoin 进行多个 http 调用,但它给我错误 error TS2339: Property 'data' does not exist on type 'Object'

forkJoin(this.userservice.getUser(), this.userservice.getDashboard()).pipe(
    map(([userData, dashboardData]) => {

      // set the user
      this.user = userData;

      // set order count
      this.orderCount.new = dashboardData.data.new.length;
      console.log(dashboardData);

      this.dataLoaded = true;
    })
).subscribe();

我理解这个错误,因为这个 属性 来自外部 api 所以在 angular/ionic 中它没有被设置。但是当我设置例如

map(([userData, dashboardData<any>]) => {

或类似的东西,它不起作用。我该如何解决这个问题?

getUser en getDashboard return http 对象

    getUser() {
    return this.http.get(environment.baseUrl + '/auth/user').pipe(
        map(results => {
            console.log(results);
            return results;
        })
    );
}

在您的代码中,替换此行

  this.orderCount.new = dashboardData.data.new.length;

有了这个

  this.orderCount.new = (dashboardData as any).data.new.length;

这一行所做的是将对象转换为打字稿的任何类型。

更好的方法是为数据创建模型 classes 并使用这些模型 class 而不是任何模型。

你可以这样输入数组:

map(([userData, dashboardData]: [UserData, DashboardData]) =>

或者您可以只输入您的观察值。不要滥用任何东西。