[英]How to convert generic type array to specialized type array in typescript
我在我的應用程序中使用 firebase。 因此,firebase 的 snapshotChanges() 方法返回一個 SnapshotAction 類型的 Observable 數組,我想在訂閱 Observable 后將其轉換為特定類型的數組。 那么,我們如何在 typescript 中做到這一點?
查看下面的代碼庫以更好地理解它,
// 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
快照操作有一個有效負載字段,它將為您提供
DatabaseSnapshot<Product>
DatabaseSnapshot 有一個 val() 方法,該方法將返回 Product 或 null ,具體取決於快照是否存在。 所以你可以像這樣寫一個小 function 來提取產品:
function example(input: SnapshotAction<string>[]): (string | null)[] {
return input.map(action => action.payload.val())
}
請注意,這是返回字符串 | null 因為快照可能不存在。 你可以看看
action.payload.exists()
如果您想進行額外的檢查或過濾。
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); }); }); );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.