Creates a deep clone of an object, retaining types.
Optional
if passed, this function can perform transformation (e.g. resolve proxies)
Creates a deep clone of an object, retaining types.