Implement _.pick to simplify serialization (#763)

Simplify the serialization code, so that we only write each prop once.
This commit is contained in:
Chenlei Hu
2025-03-12 16:08:54 -04:00
committed by GitHub
parent 9dd0ff3eb3
commit 77465113cd
2 changed files with 32 additions and 4 deletions

View File

@@ -3,3 +3,20 @@ export function omitBy<T extends object>(obj: T, predicate: (value: any) => bool
Object.entries(obj).filter(([_key, value]) => !predicate(value)),
) as Partial<T>
}
/**
* Creates an object composed of the picked object properties.
* Similar to lodash's pick function.
* @param obj The source object
* @param keys The property names to pick
* @returns A new object with just the picked properties
*/
export function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {
// eslint-disable-next-line unicorn/no-array-reduce
return keys.reduce((result, key) => {
if (key in obj) {
result[key] = obj[key]
}
return result
}, {} as Pick<T, K>)
}