Function readonly()

Takes an object (reactive or plain) or a ref and
returns a readonly proxy to the original.

function readonly<T extends object>(
  target: T
): DeepReadonly<UnwrapNestedRefs<T>>
const original = reactive({ count: 0 })

const copy = readonly(original)

watchEffect(() => {
  // works for reactivity tracking
  console.log(copy.count)
})

// mutating original will trigger watchers relying on the copy
original.count++

// mutating the copy will fail and result in a warning
copy.count++ // warning!