首页 > 解决方案 > 如何在 Typescript 中为方法返回值

问题描述

我主要是后端开发人员,并且是打字稿的新手,并且有以下方法来返回类型

PullUserDataFromServer(guid: string): UserDataEntity {
    this.http.get<UserDataEntity>(this.baseUrl + 'api/' + guid).subscribe(result => {
      this.UserData = result;
      console.log(this.UserData);
    }, error => console.error(error));
    console.log(this.UserData);
    return this.UserData;
  }

我注意到 this.UserData 在返回它之前保持为空,并且我无法从 rest 调用中传递类型。我怎样才能做到这一点?

标签: angulartypescript

解决方案


您无法从异步函数返回值。你可以返回一个 promise 或 observable 的UserDataEntity.

观察方式——

PullUserDataFromServer(guid: string): Observable<UserDataEntity>  {
  return this.http.get<UserDataEntity>(this.baseUrl + "api/" + guid)
  }
}

然后,

this.PullUserDataFromServer("some-id").subscribe(userData => {
  // some code here.
})

承诺方式——

PullUserDataFromServer(guid: string): Promise<UserDataEntity>  {
  return this.http.get<UserDataEntity>(this.baseUrl + "api/" + guid).toPromise();
  }
}

然后,

const userData = await this.PullUserDataFromServer("some-id");
// use userData in code.

推荐阅读