在TS/NodeJS中如何将对象转换为仅包含id属性的目标对象
TS/NodeJS 提取对象指定字段实现方案
下面给出几种常用的实现方式,都可以满足仅保留对象id字段的需求:
1. 直接构造新对象(最简单,适合固定字段提取)
直接从原始对象取id字段构造新对象即可:
const original = { "id": "Test", "firstname": "Test", "lastname": "Test", "age": 83 }; const result = { id: original.id };
2. 解构赋值实现
如果原始对象字段多,也可以用解构语法过滤不需要的字段:
const original = { "id": "Test", "firstname": "Test", "lastname": "Test", "age": 83 }; // 只取id,剩余字段放到rest变量里不需要使用即可 const { id, ...rest } = original; const result = { id };
3. 通用提取函数(适合动态字段提取场景)
如果需要经常做这类字段提取操作,可以写一个通用的类型安全的pick函数:
/** * 从对象中提取指定的字段,返回新对象 * @param obj 原始对象 * @param keys 要保留的字段数组 */ function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> { return keys.reduce((result, currentKey) => { if (Object.prototype.hasOwnProperty.call(obj, currentKey)) { result[currentKey] = obj[currentKey]; } return result; }, {} as Pick<T, K>); } // 调用示例 const original = { "id": "Test", "firstname": "Test", "lastname": "Test", "age": 83 }; const result = pick(original, ['id']);
上面的泛型实现可以保证TS类型安全,返回的对象类型会自动匹配你选择的字段。
内容的提问来源于stack exchange,提问作者markWanka
相关产品推荐
相关产品推荐

