Skip to content

finding(types): MobileOverrides.navigation 发布了三值导航词表,全仓零读点 —— 与 #3985 同族的另一处「声明即全部」 #4919

Description

@yinlianghui

发现于 #3985 的实施(PR 见下),不在该 PR 处理 —— #3985 的完成范围是 app-schema-renderermobileNavMode 这一个键(声明收窄 + 退休零读点的值);这一条是普查退休提及时在另一个包、另一个类型、另一个键上撞见的同族现象,修法(退休 vs 实装)同样要先有裁定,不该由实施 agent 顺手择一。未认领,交 PM 分诊。

机制

packages/types/src/mobile.ts:73-86 发布了 MobileOverrides:

export interface MobileOverrides {
layout?: 'stack' | 'tabs' | 'accordion' | 'carousel';
columns?: number;
useBottomSheet?: boolean;
fullScreen?: boolean;
touchTarget?: 'default' | 'large' | 'xlarge';
navigation?: 'bottom-tabs' | 'hamburger' | 'drawer';
}

它是公开面:packages/types/src/index.ts:578 导出,packages/mobile/src/index.ts:60 再导出一次,所以 @object-ui/types@object-ui/mobile 两个包的消费者都能写它。

全仓对这个类型的提及只有三处,没有一处是读:

  • packages/types/src/mobile.ts:73 —— 声明本身;
  • packages/types/src/mobile.ts:283 —— mobileOverrides?: MobileOverrides;,挂在另一个类型上的可选属性;
  • 两处 barrel 再导出。

grep -rn "mobileOverrides"(小写首字母,即真正会被读到的属性名)在 packages/ / apps/ / examples/ 下只命中 mobile.ts:283 声明自身 —— 没有任何渲染器、hook 或适配层取过它,更没有谁 switchnavigation 的三个值。也就是说整棵 MobileOverrides 目前是「声明即全部」,而 navigation 的三值词表是其中最像能力的一项:三个值读起来是三种移动端导航形态,实际三者行为完全一致(都不发生任何事)。

#3985 的关系,以及为什么单独立卡

同族(#3818 / #3829 / #3985 那条线:发布的语义与实际读点不符),但不是同一个键,也不在 #3985 的完成范围内:

顺带说明这一条为什么不能照抄 #3985 的结论:mobileNavMode 的裁定是「收窄到实现了的值」,而这里实现了的值是空集,收窄的终点是把键删掉;是删 navigation、删整个 MobileOverrides,还是反过来立实装卡(移动端 overrides 本来就是路线图上的东西),是产品面的取舍,不是机械动作。

可达性诚实标注

仓内实际受害者为 0:没有任何 JSON 元数据或 React 调用侧写过 mobileOverrides。今天能被误导的只有仓外照着 @object-ui/types / @object-ui/mobile.d.ts 写移动端配置的消费者 —— 他们写了 mobileOverrides: { navigation: 'bottom-tabs' } 会通过类型检查、通过构建,然后什么都不发生,且没有任何诊断。属 observation-class(今天没有用户能撞到),因此打 finding、不挂 pm:queue,定级请分诊时自行判断。

参考位置

  • packages/types/src/mobile.ts:73-86 —— MobileOverrides 声明,navigation:85
  • packages/types/src/mobile.ts:283 —— 唯一的挂载点 mobileOverrides?: MobileOverrides
  • packages/types/src/index.ts:578 / packages/mobile/src/index.ts:60 —— 两处公开再导出

关联:#3985(发现于其实施,方向相近但另一个键)、#3829(声明了却零读点)、#3818(同族、方向相反)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions