我在我的應用程式中使用了 firebase。因此,firebase 的 snapshotChanges() 方法回傳一個型別為 SnapshotAction 陣列的 Observable,我想在訂閱 Observable 后將其轉換為特定型別的陣列。那么,我們如何在打字稿中做到這一點呢?
查看下面的代碼庫以更好地理解它,
// Below observable is returned by firebase snapshotChanges() method
Observable<SnapshotAction<Product>[]>
// Now, after I subscribe to the above observable I get below type,
SnapshotAction<Product>[]
// Now I want to convert "SnapshotAction<Product>[]" to "Product[]" in typescript
uj5u.com熱心網友回復:
快照操作有一個有效載荷欄位,它會給你一個
DatabaseSnapshot<Product>
DatabaseSnapshot 有一個 val() 方法,該方法將根據快照是否存在回傳 Product 或 null。所以你可以寫一個像這樣的小函式來提取產品:
function example(input: SnapshotAction<string>[]): (string | null)[] {
return input.map(action => action.payload.val())
}
請注意,這是回傳字串 | null 因為快照可能不存在。你可以看看
action.payload.exists()
如果你想做額外的檢查或過濾。
uj5u.com熱心網友回復:
products: Product[] = [];
this.productService.getAll().pipe(
switchMap((products: SnapshotAction<Product>[]) => {
// Our intention starts here
products.map(product => {
let prod: Product = product.payload.val();
prod.key = product.key;
this.products.push(prod);
});
});
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/398059.html
