我有一个具有以下形状的对象:
const belongings = {
car: {wheels:4},
house: {size:88},
guitar: {brand:'gibson'}
};
type Belongings = typeof belongings
我想创建一个执行以下操作的函数:
selectBelongings('car', 'guitar') // returns an object of type Pick<Belongings, 'car' | 'guitar'>
我怎样才能做到这一点?
我已经尝试在 this snippet 中实现该函数,但显然我没有从正确的角度解决问题。
答案 0 :(得分:1)
这里有:
const belongings = {
car: { wheels: 4 },
house: { size: 88 },
guitar: { brand: 'gibson' }
};
type Belongings = typeof belongings
const selectBelongings = <T extends keyof Belongings>(...keys: readonly T[]) =>
keys.reduce((acc, elem) => ({
...acc,
[elem]: belongings[elem]
}), {} as Pick<Belongings, T>)
const result = selectBelongings('car', 'house')