好的,所以我正在升级wj-config的 TypeScript (以防实际情况变得相关),它的一个功能是将键(根据分隔符的存在而拆分的字符串值)“扩展”为对象。示例:键'a.b.c'
扩展为对象{ a: b { c: <value here> } }
。
对于单个键,我创建了以下InflateKey
类型:
export type InflateKey<TKey extends string, TValue, TSep extends string> = TKey extends `${infer Key}${TSep}${infer Rest}` ?
{
[K in Key]: InflateKey<Rest, TValue, TSep>
} :
{
[K in TKey]: TValue;
};
此类型按预期工作。太棒了!现在下一个任务是接受一个对象,其键与上面描述的键类似。示例:
const dic = {
'a.b': 1,
'a.c': 33,
'h.x': true,
'z.y': 'Hi'
};
// Now, through the application of a function, the result will look like:
const result = {
a: {
b: 1,
c: 33
},
h: {
x: true
},
z: {
y: 'Hi'
}
};
我需要帮助输入这个返回值。
我的思路是:
export type InflateDictionary<TDic extends Record<string, any>> = InflateKey<key1 of TDic,...> & ... & InflateKey<keyN of TDic,...>;
当然,以上内容不是有效的 TypeScript。