Öğelerin listesini getiren bir hizmeti olan bir Angular2 uygulamasına sahibim. Listedeki her bir öğe için daha spesifik bilgi almak için bir yöntem vardır. Ben dizi < => gözlemlenebilir biraz korkak görünüyor için olsa gerek gibi bu aslında tam olarak çalışırGözlemlenebilir zincirleme sırasında türleri doğru bir şekilde anlayabilme
// 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());
}
}
, ama bana hepsi ile öğelerin bir dizinin bir gözlemlenebilir veren sonu gelmez: Benim şu anki kurulumdur madde bilgisinin
sorun, return this.fetchItems()
hattında hep olsun edilmektedir:
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[]>'.
Ben Observable<any>
değiştirmeyi bir Observable
ve çıkmıyor fetchItems
beri kayıp biraz yaşıyorum aynı verir hata. Herhangi bir hata raporu almama rağmen any
'a değiştirirsem.
fetchItems
için daha iyi bir türü var mı?
Fsck! Bu sadece bana oldu ve WebStorm'a çok fazla güvenmeye başladığımdan beri oldu - WebStorm bunu otomatik olarak eklemedi ve ben de bunu kontrol etmedim bile ... :-) –
@BoazRymland yep, bu hiç de tuhaf değil t bile, içe aktarılmayan sınıfı kullanma konusunda uyar – yefrem