type RecordType = Record<string, any>;

function extendsObject<T extends RecordType>(...list: T[]) {
  const result: RecordType = { ...list[0] };

  for (let i = 1; i < list.length; i++) {
    const obj = list[i];
    if (obj) {
      Object.keys(obj).forEach(key => {
        const val = obj[key];
        if (val !== undefined) {
          result[key] = val;
        }
      });
    }
  }

  return result;
}

export default extendsObject;