object/omit.jsjavascript
/**
 * 创建一个排除指定顶层属性的新对象。
 * @function omit
 * @memberof module:object
 * @param {Object} object 原对象
 * @param {string[]} keys 要排除的属性名
 * @returns {Object} 新对象,不修改原对象
 * @throws {TypeError} 参数类型不正确时抛出
 */
function omit(object, keys) {
  if (object === null || typeof object !== 'object') throw new TypeError('object must be an object')
  if (!Array.isArray(keys) || keys.some(key => typeof key !== 'string')) throw new TypeError('keys must be a string array')
  const excluded = new Set(keys)
  return Object.fromEntries(Object.entries(object).filter(([key]) => !excluded.has(key)))
}

export default omit