是否可以将名称空间作为通用名称和后来的名称空间访问类型传递?我想实现这样的目标:
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>;
答案 0 :(得分:0)
我不确定我理解你,但如果我这样做,那么这个怎么样:
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
功能执行类似操作:
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: "" } });