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