跳到主要内容

RxDBBranchSwitchPreconditions

type RxDBBranchSwitchPreconditions = object;

Defined in: packages/rxdb/src/rxdb-plugin-system.ts:109

切分支时调用方能提出的前置条件

Remarks​

字段的形状在核心,字段的含义在能力插件。 核心一个字段都不读,原样转交 RxDBSystemContribution.prepareBranchSwitch——requireClean 的判据是 WorkingTreeState.entryCount、expectedActivationRevision 的判据是工作树的激活行, 两张表都由 @aiao/rxdb-plugin-working-tree 贡献,核心不认识它们。这与 RxDBSystemContribution.version 是同一个分工:核心搬运,插件解释。

那为什么不让插件自己声明类型?因为 switchBranch() 是核心表面的方法,它的入参得在 方法声明处就有形状——换成一袋 Record<string, unknown> 的话,用户那边既没有补全也没有 拼写检查,而这两个字段恰恰是「写错了也不报错、只是静默不生效」的那一类。反方向(核心 依赖插件的类型)是条依赖环:nx 的图插件把静态 import 直接映射成依赖边。

写成类型别名而不是 interface:能力插件那侧要拿它当自己的领域类型再导出一次 (WorkingTreeSwitchBranchOptions),而那个名字上挂着一条「不多不少就这两个字段」的 类型层断言——别名让两边只有一处声明,于是那条断言同时看住了这里。

Properties​

PropertyModifierTypeDescriptionDefined in
expectedActivationRevision?readonlynumber提供时,激活代际与它对不上就拒绝切换packages/rxdb/src/rxdb-plugin-system.ts:114
requireClean?readonlyboolean缺省即当前行为:无条件切换,与今天逐字节一致packages/rxdb/src/rxdb-plugin-system.ts:111