【发布时间】:2022-10-14 00:26:04
【问题描述】:
这似乎很基本,但我没有找到答案。
我想调用这样的函数:
const result = myFunction({
'keyA': [ 'arrayA1', 'arrayA2' ],
'keyB': [ 'arrayB1', 'arrayB2' ],
});
我希望结果是键/值记录,其中键限制为keyA 和keyB,值也是键/值记录,键为arrayA1、arrayA2 等:
result = {
keyA: {
arrayA1: 'example',
arrayA2: 'example',
},
keyB: {
arrayB1: 'example',
arrayB2: 'example',
}
}
我正在努力想出一个通用函数签名,它将获取参数中的键和数组项并将它们转换为嵌套对象键。
function myFunction<
T extends { [K in keyof T]: string[] },
S extends keyof T,
O extends T[K] // ???
//O extends { InstanceType<T[K]> } // nope
//O extends { [K in keyof T]: { [K2 in keyof T[K]]: K2 } } // very confused
>(structure: T): Record<S, Record<O, string>> { ... }
我似乎无法弄清楚如何提取嵌套字符串数组,并将其转换为仅将这些值指定为允许字符串的类型。我错过了什么?
【问题讨论】:
标签: typescript generics