@syngrisi/syngrisi
Version:
Syngrisi - Visual Testing Tool
18 lines (16 loc) • 606 B
text/typescript
/**
* Create an object composed of the picked object properties
* @param {T} object input object
* @param {Array<keyof T>} keys fields to pick
* @returns {Partial<T>} new object
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const pick = <T extends Record<string, any>>(object: T, keys: Array<keyof T>): Partial<T> => {
return keys.reduce((obj, key) => {
if (object && Object.prototype.hasOwnProperty.call(object, key)) {
if (object[key] !== undefined) obj[key] = object[key];
}
return obj;
}, {} as Partial<T>);
};
export default pick;