/** ***************************************** * Created by edonet@163.com * Created on 2019-11-30 20:31:00 ***************************************** */ 'use strict'; /** ***************************************** * 加载依赖 ***************************************** */ import { Extend, O } from './d'; /** ***************************************** * 剔除属性 ***************************************** */ function omit(origin: T): T; function omit(origin: T, keys: P[]): Omit; function omit(target: T, origin: P, keys: Q[]): Extend>; function omit(target: O, origin?: unknown, keys?: unknown): unknown { // 重载函数 if (typeof keys === 'undefined') { return omit({}, target, (origin || null) as []); } // 校验参数 const props = Array.isArray(keys) ? keys : null; // 拷贝属性 Object.keys(origin as O).forEach((key: string) => { if (!props || props.indexOf(key) === -1) { target[key as keyof O] = (origin as O)[key as keyof O]; } }); // 返回结果 return target; } /** ***************************************** * 抛出接口 ***************************************** */ export { omit };