错误TS2416类型'Observable <APIResponse>'无法分配给类型'Observable <User>'

时间:2019-09-13 11:59:22

标签: angular typescript rxjs angular-services angular8

我有一个Angular 8应用。服务的外观如下:-

export class UserService{
  constructor(private http: HttpClient) { }

  public AddUser(user: User): Observable<APIResponse> {
    return this.http.post<APIResponse>(
      API.User + "register", 
      user //data
    ).pipe();
  }
}

但这会引发以下错误。

  

错误TS2416 Type 'Observable<APIResponse>' is not assignable to type 'Observable<User>'.

但是,如果我使服务的返回类型与输入参数类型相同,即Observable<User>。然后没有错误。

在应用程序中,每个服务将具有不同的数据类型(输入),但是每个服务将具有APIResponse作为返回类型。

是什么导致此错误?我该如何摆脱呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

从您发布的代码中,很可能在您的应用程序中的某个时候,您正在使用此addUser(...)方法,并且该方法将返回Observable。 ApiResponse和User显然具有不同的结构。

您说所有服务都返回相同的ApiResponse类型-那里的数据绝对相同吗?还是根据服务输入类型而有所不同?如果是后者(我相信是这样,因为您也必须获取数据),则应该检查打字稿泛型,这可能对您有很大帮助:https://www.typescriptlang.org/docs/handbook/generics.html