angular - Preveďte jeden typ objektu na iný typ objektu pomocou RxJS
Mám nasledovné modely:
export interface IdName {
id: number;
name: string;
}
export interface Product {
id: number;
name: string;
currency?: string;
additionalData: any;
}
Chcel by som previesť Observable<Product[]> na Observable<IdName[]> v Angular/TypeScript. Skúsil som
getData() : Observable<IdName[]> {
// Note: getProducts returns Observable<Product[]>
this.productService.getProducts().pipe(
return map((product: Product) => {
{id: product.id, name: product.name}
});
);
}
Avšak ukazuje niektoré chyby v syntaxi. Ako ich môžem opraviť?
Odpoveď č. 1
Máte niekoľko preklepov, zmeňte na:
getData(): Observable<IdName[]> {
return this.productService.getProducts().pipe(
map((products: Product[]) => {
return products.map(product => ({
id: product.id,
name: product.name
} as IdName));
})
);
}
Odpoveď č. 2
Nesprávne ste umiestnili príkaz return a bodkočiarku.
Malo by to byť:
return this.productService.getProducts().pipe(
map((product: Product) => {
return {id: product.id, name: product.name}
})
);
pipe() prijíma zoznam (varargs) operácií definovaných ako operator(input => output) alebo rozšírenú formu operator(input => { return output; })
