typescript - 根据键列表从对象中选择属性
问题描述
我有一个具有以下形状的对象:
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'>
我怎样才能做到这一点?
我试图在这个片段中实现这个功能,但显然我没有从正确的角度来解决这个问题。
解决方案
在这里你有:
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')
推荐阅读
- c# - System.Reflection.ReflectionTypeLoadException - 错误的包版本
- sql - 从同一表中的不同行查询日期以显示在查询的同一行中
- python - Python中嵌套列表的两个for循环
- r - 使用 R 在循环中创建绘图
- flutter - Flutter 断言失败 - Rect 参数包含 NaN 值
- google-sheets-formula - 谷歌表格公式查找两个日期之间的日期并返回假期
- swift - 在 swift 中使用 Create ML object detection model
- boto3 - AWS MWAA Airflow Scheduler Celery Executor 在没有日志的情况下使任务失败 - Boto Parser 并发错误
- google-calendar-api - 节点红色对谷歌日历 api 的访问不起作用
- reactjs - 使用 dockerFile 和 nginx 部署 React 应用程序