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