簡體   English   中英

如何將泛型類型傳遞給泛型選擇器?

[英]How to pass generic type into a generic selector?

我有打字稿的問題,我不知道如何解決它...

我創建了一個通用狀態來管理多個實體。 每個實體都有自己的接口,每個實體都是泛型類型(在我的示例中稱為 Reference)的一部分。

我想要的:當有人需要從此狀態獲取實體時,他在select方法(或selectReference ?)中指定所需的接口,並檢查給定的接口是否是Reference類型別名的一部分。

我的接口和類型別名:

export interface A { propA: string; onch: string }
export interface B { propB: number; foo: boolean; hehe: string }
export interface C { propC: string; bar: number }
export interface D {}
export type Reference = A | B | C

我的選擇器:

export const selectReference = () => createSelector(selectRef, adapter.getSelectors().selectAll); // selectRef return an EntityState<Reference>

我的組件:

    export class MyComponent {
    collection$: Observable<Array<A>>;

        getCollection(): void {
            this.collection$ = this.store.pipe( select(fromReferencesSelectors.selectReference());
        }
    }

在此示例中, ts linter 顯示此錯誤: Type 'Reference' is not assignable to type 'A'

我怎樣才能做到這一點 ?

提前謝謝你:)

這本身不是一個答案,但它可能會給你一個想法:

    export interface A { propA: string; onch: string; }
    export interface B { propB: number; foo: boolean; hehe: string; }
    export interface C { propC: string; bar: number; }
    export type Reference  = A | B | C;

       b: A;
       a: Reference = {
        propA: '', onch: 'string'
      };
        this.b = this.a; // this throws Type 'Reference' is not assignable to type 'A'.
            this.b = this.a as A; // this works

根據我的經驗,您將始終必須強制轉換它以明確告訴打字稿您期望的類型是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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