У меня похожий случай, описанный в этом посте .
У меня есть служба входа пользователя, которая (помимо прочего) проверяет, действителен ли токен пользователя. Ответ сервера определяется в интерфейсе:
export interface UserVerifyResponse {
success: boolean
}
Моя цель состояла в том, чтобы создать наблюдаемое, которое будет возвращать логическое значение в зависимости от того, проверен ли пользователь. Этот код работал с 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>
), и теперь я задаюсь вопросом, должен ли я форсировать RxJS 6.2 или есть простой способ перейти на 6.3. Я могу переписать их все, как описано в ответе на вышеупомянутый пост, но я хочу вернуть логическое значение, и мой подход, на мой взгляд, выглядит более ясным.
Есть предложения?