我有一个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作为返回类型。
是什么导致此错误?我该如何摆脱呢?
谢谢!
答案 0 :(得分:0)
从您发布的代码中,很可能在您的应用程序中的某个时候,您正在使用此addUser(...)方法,并且该方法将返回Observable。 ApiResponse和User显然具有不同的结构。
您说所有服务都返回相同的ApiResponse类型-那里的数据绝对相同吗?还是根据服务输入类型而有所不同?如果是后者(我相信是这样,因为您也必须获取数据),则应该检查打字稿泛型,这可能对您有很大帮助:https://www.typescriptlang.org/docs/handbook/generics.html