/** * 把对象复制一份(浅拷贝),并且可以删除某些属性 key * @param ob * @param options * @returns */ export function objectCopy(ob: any, options?: { deleteKeys: string[] } | { keys: string[] }) { let newOb: any = {} if (options) { if ("keys" in options) { for (let key of options.keys) { newOb[key] = ob[key] } } else if ("deleteKeys" in options) { let deleteKeysMap: { [key: string]: boolean } = {} let deleteKeys = options.deleteKeys for (let key of deleteKeys) { deleteKeysMap[key] = true } for (let key in ob) { if (!deleteKeysMap[key]) { newOb[key] = ob[key] } } } } else { Object.assign(newOb, ob) } return newOb }