# 常见问题
# 关于 Interface
为什么我不能使用
interface为 Soft Storage 定义类型?因为
interface定义的属性没有string签名,但 Soft Storage 为传入的类型设置了像这样的Record<string, unknown>类型约束,所以请使用type代替。
# 关于 remove() 和 clear() 函数
为什么不提供
remove()和clear()函数?有两个原因:
组件状态的关联性
在框架中,存储模块中的属性与组件的状态是一一关联的。若用
remove()和clear()删除存储模块中的键值对,组件将会无法感知存储模块的变更,存储模块中的非空属性和对应的组件状态将会失去同步,从而导致一些意外的错误。属性的“不可为空”定义
语义上,
remove()和clear()用于删除存储模块中的键值对,包括非空属性。如此,这些非空属性就违反了它们对“不可为空”的定义。