确保来自接口/ PickDeep<>的子集接口,可以通过以下步骤实现:
interface PickDeep<T, K extends keyof T> {
[P in K]: T[P] extends object ? PickDeep<T[P], keyof T[P]> : T[P];
}
function pickDeep<T, K extends keyof T>(obj: T, paths: K[]): PickDeep<T, K> {
const result = {} as PickDeep<T, K>;
for (const path of paths) {
let value = obj;
for (const key of path.split('.')) {
value = value[key];
}
result[path] = value;
}
return result;
}
// 示例使用
const obj = {
a: {
b: {
c: 1,
d: 2,
},
},
e: {
f: {
g: 3,
h: 4,
},
},
};
const subset = pickDeep(obj, ['a.b.c', 'e.f.g']);
console.log(subset); // 输出 { a: { b: { c: 1 } }, e: { f: { g: 3 } } }
在这个例子中,我们定义了一个接口/ PickDeep<>,并实现了一个 pickDeep() 函数来选择属性子集。通过传入一个对象和属性路径数组,我们可以从给定对象中选择深层嵌套的属性子集,并返回一个新的子集接口。
对于这个问题,腾讯云没有特定的产品或链接与之相关。
领取专属 10元无门槛券
手把手带您无忧上云