自定义协作对象相对于 CollaborativeMap 的优势?

Advantages of Custom Collaborative Objects over CollaborativeMap?

根据阅读文档和我使用 4 种内置协作类型的经验,我想到了这些可能的优势:

  1. 如果您希望将实时功能混合到您的 classes 中,而不是使用组合(class 包含 Collaborative* 字段;这就是我现在正在做的)。
  2. 构造函数的一些惯用优点,加上初始化钩子,保证class的所有对象都满足一些属性.
  3. 类型化对象相对于非类型化对象的一些常见优势。您似乎无法写入未注册的字段,因此不会因错误输入 CollaborativeMap 键或意外分配给不同非正式类型的不同 CollaborativeMap 的键而导致错误。后者发生在我身上。如果我理解正确,可以在使用 Typescript 或 Flow 时静态地排除这两个错误。
  4. onLoaded hook。我不清楚为什么这样的东西不适用于内置类型。可以模拟内置类型吗?

两者在功能上是等价的(自定义协作对象在后台实现为 CollaborativeMap),主要区别在于您指出的语法。

对于 onLoaded 挂钩,您可以对文档中的内置类型执行类似的工作 onLoaded function