【发布时间】:2020-05-18 22:55:36
【问题描述】:
我有一个方法将一个对象作为输入,该对象的值是字符串数组;它返回一个对象,其值是键等于字符串值的对象。例如
myFunction({foo: ['a', 'b']}) // ==> {foo: {a: Widget, b: Widget}}
我正在尝试定义此函数的签名。我最好的尝试是:
declare function myFunction
<Q extends string[], T extends {[key: string]: Q}>
(keys: T) : {[key1 in keyof T]: {[key2 in T[key1][number]]: Widget}}
这几乎有效,除了嵌套对象的键名没有被推断出来。第一个例子返回:
{
foo: {
[x: string]: Widget;
};
}
而我希望它返回
{
foo: {
a: Widget;
b: Widget;
};
}
可以吗?
【问题讨论】:
标签: javascript typescript function signature .d.ts