Tôi có ứng dụng Angular2 có dịch vụ tìm nạp danh sách các mục. Có một phương pháp để tìm nạp thêm thông tin cụ thể cho mỗi mục trong danh sách. thiết lập hiện tại của tôi là:Đúng khi suy luận các loại khi chuỗi quan sát
// service for item list
class ItemsService {
fetchItems(): Observable<Item[]> {
return this.http.get(url).map((res: Response) => res.json());
}
fetchItemsWithData(): Observable<Item[]> {
return this.fetchItems()
.flatMap((items: Observable<Item[]>) => items)
.map((item: Item) => this.itemService.fetchData(item))
.flatMap((items: Observable<Item[]>) => items)
.toArray();
}
}
// service for individual items
class ItemService {
fetchData(item: Item) {
return this.http.get(`${url}/${item.id}`)
.map((res: Response) => res.json());
}
}
này thực sự hoạt động chính xác như tôi cần nó để mặc dù mảng < => quan sát dường như một chút sôi nổi, nhưng nó kết thúc đem lại cho tôi một quan sát của một loạt các mặt hàng với tất cả của thông tin mục.
Vấn đề là, trên dòng return this.fetchItems()
tôi luôn luôn nhận được:
The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'Item[]' is not a valid type argument because it is not a supertype of candidate 'Observable<Item[]>'. Property 'length' is missing in type 'Observable<Item[]>'.
Tôi đang ở một chút của một sự mất mát kể từ fetchItems
không trả về một Observable
và thay đổi nó để Observable<any>
cho cùng lỗi. Nếu tôi chỉ thay đổi nó thành any
mặc dù tôi không nhận được bất kỳ báo cáo lỗi nào cả.
Có loại nào tốt hơn để sử dụng cho fetchItems
không?
Fsck! điều đó đã xảy ra với tôi và điều đó đã xảy ra kể từ khi tôi tin tưởng WebStorm quá nhiều - WebStorm không tự động thêm nó, và tôi thậm chí không kiểm tra ... :-) –
@BoazRymland yep, thật lạ lùng là nó không có thậm chí còn cảnh báo về việc sử dụng lớp không được nhập – yefrem