首页 > 解决方案 > 通用 http 请求如何在 Angular 中工作?

问题描述

当您有一个 http 客户端操作时,例如 this.http.get,拥有一个泛型类型有什么作用?就像我做了 this.http.get(url); 一样,这是否会确保从 url 请求的所有内容都是该类型的,如果不是,它会抛出错误吗?

有没有区别

getHeroes (): Observable<Hero[]> {
  return this.http.get<Hero[]>(this.heroesUrl)
    .pipe(
      catchError(this.handleError<Hero[]>('getHeroes', []))
    );
}

这样做:

getHeroes (): Observable<Hero[]> {
  return this.http.get(this.heroesUrl)
    .pipe(
      catchError(this.handleError<Hero[]>('getHeroes', []))
    );
}

我认为这两个示例具有相同的效果是否正确,因为底部示例的方法签名指定了 Observable 的类型?那么底部的例子不是也被泛化了吗?

标签: angular

解决方案


没有任何区别。在这两种情况下都将返回相同的数据。遗传类型确保应用程序其余部分的类型安全。

通过设置泛型,您可以为应用程序的其余部分设置期望,如果期望从调用中得到什么以及如何处理它。


推荐阅读