我正在构建一个 typescript angular 2 应用程序并使用 rxjs。我在这里遵循示例:
https://angular.io/docs/ts/latest/tutorial/toh-pt6.html#!#stq=formgroup&stp=1
虽然我正在尝试使用 typescript 强类型化我的返回签名。这可能是我的问题,因为你不应该这样做。但看起来你应该能够。
假设我有一个类型为返回 Observable 的服务>。
public search(term: string) : Observable<Array<MyModel>> { // http call }
在我的组件中,我试图监听这个可观察的流并返回结果。
private search = new Subject<Search>();
results: Observable<Array<MyModel>>;
ngOnInit() {
this.results = this.search
.debounceTime(400)
.distinctUntilChanged()
.switchMap(search => {
return service.search(search.term); // returns Observable<Array<MyModel>>
});
}
这不会编译消息 Cannot convert type Observable<Object> to type Observable<MyModel[]>>
我不明白为什么 switchmap 返回一个 Observable 而不是我的类型。在将其提供给结果之前,我是否需要再次映射它?这是 switchmap 返回签名的 typescript 打字问题吗?
最佳答案
Typescript 可能有错误的类型推断,我会尝试以下方法之一:
给你的处理程序一个返回类型:
.switchMap((search): Observable<Array<MyModel>> => {
return service.search(search.term); // returns Observable<Array<MyModel>>
});
如果这不起作用,“妥协”将结果变量的类型更改为:
results: Observable<any>;
关于Angular 2 rxjs switchmap 返回 Observable<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38898255/