Skip to content

finding(plugin-calendar): README 的 "Schema API / CalendarView" 块把必填的 events 标成选填,且只列了 CalendarViewSchema 13 个键里的 6 个 #5045

Description

@yinlianghui

发现于 #5010 的实施(plugin-calendar README 导入面漂移)。Filed unassigned, not claiming.

#5010同文件但不同性质 —— #5010 修的是 import 名/路径漂移(照抄即 TypeError / TS2305 / TS2322),本单是 schema 键断言的准确性,所以没有夹带进 #5010 的 PR。

现象

packages/plugin-calendar/README.md 的 "Schema API → CalendarView" 块:

{type: 'calendar-view',events?: CalendarEvent[],defaultDate?: string,// ISO date stringonEventClick?: (event)=>void,onDateClick?: (date)=>void,className?: string}

对照 CalendarViewSchema(packages/types/src/complex.ts:174)实测两点不符:

  1. events 是必填的,README 标成了 events?CalendarViewSchemaevents: CalendarEvent[];?。按 README 省掉 events 写一个 calendar-view 节点,TS 直接报缺必填属性 —— README 恰恰把「唯一一个除 type 以外的必填键」标成了可省。
  2. 只列了 13 个键里的 6 个。缺 defaultViewviewdateviewseditableonEventCreateonEventUpdateonDateChangeonViewChange;其中 defaultView / view / views / editable 是作者会真的想写的授权键(README 前文 "Drag-and-Drop" 一节还在讲 week/day 视图,但列表里看不到 view 怎么设)。
  3. 附带:defaultDate?: string 实为 string | Date;onDateClick 不在 CalendarViewSchema 上(schema 上是 onDateChange;onDateClickCalendarViewProps组件回调)。第 3 条与 finding: 两个结构不兼容的 CalendarEvent 同名并存(@object-ui/types 授权型 vs @object-ui/plugin-calendar 运行时型),已造成一处文档示例不可编译 #5044 记的「授权型 vs 运行时型同名混用」是同一个根源。

实测键集(脚本对 CalendarViewSchema 取键):

type (required=YES) events (required=YES) defaultView? view?
defaultDate? date? views? editable?
onEventClick? onEventCreate? onEventUpdate?
onDateChange? onViewChange?

备注

这个块显然是有意的摘要而非穷举(所以「缺键」本身可以是设计选择),但 (1) 是实打实的错 —— 必填标成选填 —— 而 (3) 会把读者引向另一个包的类型。若要修,建议顺带在块上写明「部分键,完整定义见 CalendarViewSchema」,免得下一个读者再把它当穷举读。

@object-ui/plugin-calendar 的 README 在 package.jsonfiles 里,随 npm 发布。

分级

交 PM 分诊。挂 finding:不是运行时故障,是文档准确性;体量小,但按 #4949 的纪律不自行压下,由 PM 分诊评级。

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queue

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions