我有一个与这篇文章中描述的案例类似的案例。
我有一个用户登录服务,它(除其他外)验证用户的令牌是否仍然有效。服务器的响应在一个接口中定义:
export interface UserVerifyResponse {
success: boolean
}
我的目标是创建一个 observable,它会根据用户是否经过验证返回一个布尔值。此代码适用于 RxJS v6.2:
authenticate(): Observable<boolean> {
return this.http.get<boolean>(
this.apiUrl+'/verify_user'
).pipe(
map<UserVerifyResponse, boolean>((receivedData: UserVerifyResponse) => {
return receivedData.success;
}),
tap((data: boolean) => {console.log("User authenticated", data)}),
catchError(this.handleError)
)
}
但是,现在我已经将 RxJS 更新到 v6.3,我收到了这个错误:
ERROR in src/app/login/user.service.ts(50,13): error TS2345: Argument of type 'OperatorFunction<UserVerifyResponse, boolean>' is not assignable to parameter of type 'OperatorFunction<boolean, boolean>'.
Type 'UserVerifyResponse' is not assignable to type 'boolean'.
这让我很困扰,因为我使用这种将 API 响应映射到内部类或原语的方法(在其他地方我有一个使用http.get<T>
. 6.3. 我可以按照上述帖子的答案中的描述重写所有这些,但我想返回一个布尔值,我认为我的方法看起来更清晰。
有什么建议么?