/**
 * 重置对象会自动判断类型
 * 当你传了第二个值之后会把两个对象合并
 * 所有的值都置空
 * 数字变为0
 * @param obj
 * @param newData
 */
export const resetData = (obj: object, newData?: object | null) => {
  // 清空对象属性
  Object.keys(obj).forEach(key => {
    let type = "Undefined";
    if (obj[key] !== undefined) {
      type = toString.call(obj[key]).slice(8, -1);  // 获取属性值的类型
    }
    switch (type) {
      case "String":
        obj[key] = "";
        break;
      case "Number":
        obj[key] = null;
        break;
      case "Boolean":
        obj[key] = false;
        break;
      case "Array":
        obj[key] = [];
        break;
      case "Date":
        obj[key] = null;  // 日期类型置为 null
        break;
      case "Object":
        resetData(obj[key]);  // 对象类型递归遍历
        break;
      default:
        obj[key] = null;  // 其他类型都置为 null
    }
  });
  // 合并新数据到原对象上
  Object.assign(obj, newData);
};