/** ***************************************** * Created by edonet@163.com * Created on 2019-11-30 20:41:57 ***************************************** */ 'use strict'; /** ***************************************** * 加载依赖 ***************************************** */ import { Extend, O } from './d'; /** ***************************************** * 数据 ***************************************** */ type P = O | null; /** ***************************************** * 合并属性类型 ***************************************** */ type Assign = ( T extends [_: infer P, ...args: infer Q] ? P extends O ? Extend> : Assign : Record ); /** ***************************************** * 合并属性 ***************************************** */ export function assign(...args: T): Assign { // 校验参数 if (args.length > 1) { return Object.assign(...args as unknown as [O]) as Assign; } // 重载参数 return Object.assign({}, args[0]) as unknown as Assign; }