从 Rxjs switchmap 返回对象时参数类型无效
Invalid argument type when returning object from Rxjs switchmap
在 angular 中,我创建了一个从不同服务获取数据并将数据与第一个服务合并的服务。
如果第一个服务 returns 为空数据,那么我不需要调用第二个服务。这是代码
searchData(): Observable<MyData> {
const url = `${this.context}/search`;
return this.http.get<MyData>(url)
.pipe(
switchMap((myData: MyData) => {
if (myData.data) {
return this.secondService.getTags()
.pipe(map((tagResponse: TagResponse) => {
// data manipultion
return myData;
}));
} else {
return myData;
}
}));
}
但这正在显示
Argument of type '(myData: MyData) => MyData | Observable<MyData>' is not assignable to parameter of type '(value: MyData, index: number) => ObservableInput<any>'.
Type 'MyData | Observable<MyData>' is not assignable to type 'ObservableInput<any>'.
Type 'MyData' is not assignable to type 'ObservableInput<any>'.
Property '[Symbol.iterator]' is missing in type 'MyData' but required in type 'Iterable<any>'
在 switchMap
的 else 块中,您必须 return 一个 Observable
return of(myData);
因为 switchMap
总是期望 Observable
被 return 编辑。
在 angular 中,我创建了一个从不同服务获取数据并将数据与第一个服务合并的服务。
如果第一个服务 returns 为空数据,那么我不需要调用第二个服务。这是代码
searchData(): Observable<MyData> {
const url = `${this.context}/search`;
return this.http.get<MyData>(url)
.pipe(
switchMap((myData: MyData) => {
if (myData.data) {
return this.secondService.getTags()
.pipe(map((tagResponse: TagResponse) => {
// data manipultion
return myData;
}));
} else {
return myData;
}
}));
}
但这正在显示
Argument of type '(myData: MyData) => MyData | Observable<MyData>' is not assignable to parameter of type '(value: MyData, index: number) => ObservableInput<any>'.
Type 'MyData | Observable<MyData>' is not assignable to type 'ObservableInput<any>'.
Type 'MyData' is not assignable to type 'ObservableInput<any>'.
Property '[Symbol.iterator]' is missing in type 'MyData' but required in type 'Iterable<any>'
在 switchMap
的 else 块中,您必须 return 一个 Observable
return of(myData);
因为 switchMap
总是期望 Observable
被 return 编辑。