簡體   English   中英

TypeScript通用子類型

[英]TypeScript Generic sub type

是否可以將名稱空間作為通用名稱和以后來自該名稱空間的訪問類型傳遞? 我想實現這樣的目標:

namespace Test {
  export type A = { ... }
  export type B = { ... }
}

type Gen<T> = (a: T.A, b: T.B) => void;

// using Gen<T>
let x: Gen<Test>;

我不確定自己是否了解您,但是如果我理解您的話,該怎么辦:

namespace Test {
    export const Result = {
        num: 3
    }

    export const Variables = {
        str: "string"
    }
}

interface MyNamespace<R, V> {
    Result: R;
    Variables: V;
}

function Gen<R, V>(namespace: MyNamespace<R, V>): void {}

Gen(Test);

操場上的代碼


編輯

您可以使用所需的query功能執行類似的query

function query<R, V>(namespace: MyNamespace<R, V>, data: { query: any, variables?: V }): Array<R> {
    return [];    
}

// type of arr is { num: number; }[]
let arr = query(Test, { query: "query", variables: { str: "" } });

操場上的代碼

暫無
暫無

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

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