export function pick(object: T, keys: K[]): Pick { return Object.assign( {}, // eslint-disable-next-line array-callback-return ...keys.map((key) => { if (object && Object.prototype.hasOwnProperty.call(object, key)) return { [key]: object[key] } }), ) } export function omit(obj: T, ...keys: K[]): Omit { keys.forEach(key => delete obj[key]) return obj }