我正在构建一个typescript angular 2应用程序并使用rxjs.我在这里关注这个例子:
https://angular.io/docs/ts/latest/tutorial/toh-pt6.html#!#stq=formgroup&stp=1
虽然我试图用打字稿强力键入我的返回签名.这可能是我的问题,因为你不应该这样做.但似乎你应该能够.
假设我有一个输入的服务来返回一个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>> }); }
这不会编译消息无法转换类型Observable< Object>输入Observable< MyModel []>>
我不明白为什么switchmap返回一个Observable而不是我的类型.在将其提供给结果之前,是否需要再次映射?这是switchmap返回签名的打字稿问题吗?
解决方法
打字稿可能有错误的类型推断,我会尝试以下之一:
给你的处理程序一个返回类型:
.switchMap((search): Observable<Array<MyModel>> => { return service.search(search.term); // returns Observable<Array<MyModel>> });
如果这不起作用,则“妥协”将结果变量的类型更改为:
results: Observable<any>;