簡體   English   中英

如何將泛型類型數組轉換為 typescript 中的專用類型數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM