sodiray / radash

Functional utility library - modern, simple, typed, powerful
https://radash-docs.vercel.app
MIT License
4.1k stars 160 forks source link

[REQUEST] assign - How to keep object references #416

Open xmsz-stu opened 1 month ago

xmsz-stu commented 1 month ago

Currently, the assign function creates new object references during the merge process. I want to keep the object references. like this

export const assign = <X extends Record<string | symbol | number, any>>(
  initial: X,
  override: X
): X => {
  if (!initial || !override) return initial ?? override ?? {}

  for (const [key, value] of Object.entries(override)) {
    if (isObject(initial[key]) && isObject(value)) {
      assign(initial[key], value)
    } else {
      initial[key] = value
    }
  }

  return initial
}