核心结论
设计 Vue 组合式函数时,应先明确调用者得到的是普通值快照、只读响应式引用、可写引用,还是包含状态与操作方法的领域对象,再决定是否进行响应式解包。若希望调用者持续观察变化,应返回 ref、readonly 包装后的引用或由 toRef、toRefs 创建的属性引用,而不是把响应式属性解构成普通值。若允许外部修改,应显式暴露可写引用或带有 get、set 的 computed;若修改必须遵循业务规则,则应暴露只读状态和命名操作方法。对于 null、undefined 等空值,应按照真实生命周期建模,不能依赖非空断言提前消除。
底层机制
ref 通过 `.va