【发布时间】:2020-05-23 23:23:03
【问题描述】:
我有一个简单的服务,可以发布数据并返回 true,否则会抛出错误。
首先通过getUserById获取用户数据,返回Promise(用户脱轨)
然后concatMap调用其他方法返回true!
// I want it's return type to be Observable<boolean>
saveUser(record: any): Observable<any> {
return from(this.getUserById(1))
.pipe(concatMap((data: any) => {
// Some other code....
return this.httpClient.post(`${this.API_URL}/users`, record)
.pipe(
map((result: any) => {
console.log(result);
return true;
}),
catchError(error => this.handleError(error))
)
}));
}
我想要,它的返回类型是 Observable 但是当我更改为 Observable 布尔值时,立即开始出错。
刚刚在 [stackblitz.com/][1] 上创建了示例代码,看看我可以解决这个问题吗?
注意:除了saveUser(record: any),我无法更改任何方法
【问题讨论】:
-
需要更多信息才能更具体,但
<TypeA | TypeB> is not assignable to <TypeA>在您将值设置为 TypeB 时发生,然后再将其设置为预期的 TypeA。在您的情况下,您在给它一个布尔值之前将它定义为一个空对象。 -
不要定义
getData和any,而是尝试完全按照您的意愿定义它:getData(): boolean和 TS 编译器应该能够查明getData返回类型 @ 的位置的错误987654328@ -
@Z.Bagley:
getData是一个返回完整用户详细信息的现有方法,已经在 100 个地方使用,我无法更改任何现有代码 -
它是否准确返回
UserData(UserData,您提到了UserDetail,所以在那里检查)?如果正确,请更改为userDetail: any并检查它是否通过。我们无法判断错误发生在哪一行,因此如果仍然失败,则可能是在 utilityService.CheckFeature 方法本身中。如果您能提供,该代码可能会很有用。