message: adding interface to deepMerge which reflects the merging interfaces
diff: @@ -8,7 +8,11 @@ type BaseToneOptions = import("../Tone").BaseToneOptions;
  * @param target the object to merge into
  * @param sources the source objects to merge
  */
  -export function deepMerge<T>(target: T, ...sources: Array<RecursivePartial<T>>): T {
  +export function deepMerge<T>(target: T): T;
  +export function deepMerge<T, U>(target: T, source1: U): T & U;
  +export function deepMerge<T, U, V>(target: T, source1: U, source2: V): T & U & V;
  +export function deepMerge<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
  +export function deepMerge(target: any, ...sources: any[]): any {
  if (!sources.length) { return target; }
  const source = sources.shift();
  @@ -17,7 +21,6 @@ export function deepMerge<T>(target: T, ...sources: Array<RecursivePartial<T>>):
  // values with the key 'value' are an exception
  // they don't get deep merged
  if (key === "value") {
  - // @ts-ignore
  target[key] = source[key];
  } else if (isObject(source[key])) {
  if (!target[key]) { Object.assign(target, { [key]: {} }); }
  @@ -27,7 +30,7 @@ export function deepMerge<T>(target: T, ...sources: Array<RecursivePartial<T>>):
  }
  }
  }
  -
  + // @ts-ignore
  return deepMerge(target, ...sources);
  }
  