# 常见问题

# 关于 Interface

  • 为什么我不能使用 interface 为 Soft Storage 定义类型?

  • 因为 interface 定义的属性没有 string 签名,但 Soft Storage 为传入的类型设置了像这样的 Record<string, unknown> 类型约束,所以请使用 type 代替。

# 关于 remove() 和 clear() 函数

  • 为什么不提供 remove()clear() 函数?

  • 有两个原因:

    • 组件状态的关联性

      在框架中,存储模块中的属性与组件的状态是一一关联的。若用 remove()clear() 删除存储模块中的键值对,组件将会无法感知存储模块的变更,存储模块中的非空属性和对应的组件状态将会失去同步,从而导致一些意外的错误。

    • 属性的“不可为空”定义

      语义上,remove()clear() 用于删除存储模块中的键值对,包括非空属性。如此,这些非空属性就违反了它们对“不可为空”的定义。