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
| Property | Modifier | Type | Description | Defined in |
|---|---|---|---|---|
expectedActivationRevision? | readonly | number | 提供时,激活代际与它对不上就拒绝切换 | packages/rxdb/src/rxdb-plugin-system.ts:114 |
requireClean? | readonly | boolean | 缺省即当前行为:无条件切换,与今天逐字节一致 | packages/rxdb/src/rxdb-plugin-system.ts:111 |