Skip to content

content/docs/plugins/plugin-{form,grid,view}.mdx 三处 import type 从错误的包导入真实类型 —— 照抄即 TS2305(#5011/#5013/#5014 第二条的文档站镜像) #5086

Description

@yinlianghui

发现于 #5076 的实施(PR #5085)。Filed unassigned, not claiming。与 #5076 不同性质故分离立卡:#5076 的三个 *Components 是全仓不存在的虚构名(运行期 Object.entries(undefined) 抛 TypeError),本卡的五个名字都是真类型,只是声明在别的包 —— 失败发生在编译期而不是运行期。

读数取自 origin/main @ 03e5f972a160998a694742bd7c72149ae2fa3d8e(PR #5085 落地后行号会前移,判定不变)。

现象

文件 行 写的 该名字在该包 dist/index.d.ts 真身
content/docs/plugins/plugin-form.mdx :251 import type { FormSchema, FormField } from '@object-ui/plugin-form' 两个都不在(51 个导出名) 协议类型,声明在 @object-ui/types(src/form.ts);plugin-form 只 import 不 re-export
content/docs/plugins/plugin-grid.mdx :336 import type { GridSchema, GridColumn } from '@object-ui/plugin-grid' 两个都不在(49 个导出名) 真的数据网格类型是 @object-ui/types 的 ObjectGridSchema 与 ListColumn;而 GridSchema 这个名字在 @object-ui/types 里是 CSS Grid 布局容器(columns 是列数不是列表),GridColumn 在 @object-ui/fields 里是表单行项控件的列(键为 name)
content/docs/plugins/plugin-view.mdx :263 import type { ObjectViewSchema } from '@object-ui/plugin-view' 不在(39 个导出名) 声明在 @object-ui/types(src/objectql.ts:1387);plugin-view 只 import 不 re-export

三处都是 TS2305:读者照抄拿不到类型,IDE 直接红。GridSchema / GridColumn 更糟一层 —— 这两个名字在别处存在且指别的东西,读者按名字搜过去会拿到语义完全不同的类型。

复核方式

导出面从已构建的 dist/index.d.ts 取(TS 编译器 API checker.getExportsOfModule,#5043 规格),不是 grep src:

pnpm --filter @object-ui/plugin-form --filter @object-ui/plugin-grid --filter @object-ui/plugin-view build
# 然后对 dist/index.d.ts 取 getExportsOfModule,五个名字全部不在其中

真身位置:

git grep -n "interface ObjectViewSchema" -- packages/types/src   # objectql.ts:1387
git grep -n "interface ObjectGridSchema" -- packages/types/src   # objectql.ts:532
git grep -n "ListColumn" -- packages/types/src/objectql.ts       # :74 从 @objectstack/spec/ui re-export

与已有卡的关系

修法(与 README 侧三单同口径)

只改 import 路径到 @object-ui/types,示例键面随之对齐真身;⛔ 不为了让旧路径成立而新增 re-export —— 加宽包的公共面是契约变更,不是文档修复(#5011 已就此定调)。

分级

未打 finding 标签:是读者今天照抄就会撞上的具体缺陷(TS2305),与 #5011 / #5013 / #5014 同性质,只是文件在文档站。交 PM 分诊。

Activity

  1. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    CollaboratorAuthor

    立卡人补记(正文末尾 footer 被 issues 端点剥掉,改用评论补):本卡由 #5076 的 os-dev 席在实施 PR #5085 时,用「三个 mdx 代码块里所有 @object-ui/* 具名导入 vs 各包已构建 dist/index.d.ts 导出面」的名集合核对稳定抓到 —— 改前 8 条不成立,PR #5085 修掉其中 3 条虚构名后剩下的正是本卡这 5 条。该单派发边界是「只动三处 *Components 注册段」,故分离立卡。未认领。


    Generated by Claude Code

  2. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    grid 三分之一已随 PR #5103 处理(draft,Fixes #5087 + Part of #5086)。

    本卡表格里 content/docs/plugins/plugin-grid.mdx 那一行(卡面 :336,PR #5085 落地后现为 :371)与 #5087 的键面重写同处 TypeScript Support 代码块,拆开修会互踩 —— import 行改指 @object-ui/types 后,紧跟其下的示例字面量必须同时从 type: 'grid' 改成 object-grid、补上 objectName,否则标注了 ObjectGridSchema 的示例自身不成立。故合单。

    复核结论与卡面逐字一致,证据取自已构建的 dist/index.d.ts,用 TS 编译器 API checker.getExportsOfModule(#5043 规格),非 grep src:

    • @object-ui/plugin-grid 共 49 个导出名,GridSchema / GridColumn 均不在其中。
    • GridSchema 在 @object-ui/types 是 CSS Grid 布局容器(src/layout.ts:202,columns?: number | Record< string, number >,即列数)。
    • GridColumn 在 @object-ui/fields 是行项控件的列(src/widgets/GridField.tsx:76,身份键为 name)。
    • 真身:@object-ui/types 的 ObjectGridSchema 与 ListColumn,两者均 PRESENT。

    编译期证据(旧 import 行照抄的后果):

    error TS2305: Module '"@object-ui/plugin-grid"' has no exported member 'GridSchema'.
    error TS2305: Module '"@object-ui/plugin-grid"' has no exported member 'GridColumn'.
    

    按 #5011 定调,未为让旧路径成立而新增 re-export。

    本卡剩余两处,不在 PR #5103 内:

    文件 写的 状态
    content/docs/plugins/plugin-form.mdx { FormSchema, FormField } from @object-ui/plugin-form 未处理,可独立派发
    content/docs/plugins/plugin-view.mdx { ObjectViewSchema } from @object-ui/plugin-view 未处理;与 #5088 同文件需序,建议 PM 统一安排先后

    Generated by Claude Code

  3. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    view 三分之一已随 PR #5109 处理(draft,Fixes #5088 + Part of #5086)。

    本卡表格里 content/docs/plugins/plugin-view.mdx 那一行(卡面 :263)与 #5088 的整页键面重写同处 TypeScript Support 代码块,拆开修会互踩 —— import 行改指 @object-ui/types 后,紧跟其下的示例字面量必须同时补 objectName、去掉 viewMode 与 fields,否则标注了 ObjectViewSchema 的示例自身不成立。与 PR #5103 处理 grid 三分之一时同一理由,故合单。

    复核结论与卡面逐字一致,证据取自已构建的 dist/index.d.ts,用 TS 编译器 API checker.getExportsOfModule(#5043 规格),非 grep src:

    • @object-ui/plugin-view 共 39 个导出名(与卡面记的 39 相符),ObjectViewSchema ABSENT;ObjectViewProps PRESENT —— 该包导出的是组件 prop 类型,不含任何 schema 类型。
    • 真身 @object-ui/types(675 个导出名)PRESENT,声明在 packages/types/src/objectql.ts:1387。同包并 PRESENT 的还有本页类型表用到的 NamedListView / ViewNavigationConfig / ViewTabBarConfig。
    • packages/plugin-view/src 只 import 不 re-export,与卡面判断一致。

    编译期证据(旧 import 行照抄的后果),与卡面所记的 TS2305 同形:

    error TS2305: Module '"@object-ui/plugin-view"' has no exported member 'ObjectViewSchema'.
    

    按 #5011 定调,未为让旧路径成立而新增 re-export。

    本卡至此仅余一处:

    文件 写的 状态
    content/docs/plugins/plugin-form.mdx { FormSchema, FormField } from @object-ui/plugin-form 未处理,可独立派发

    grid 处见 PR #5103,view 处见 PR #5109。


    Generated by Claude Code

  4. self-assigned this
    on Aug 18, 2026
  5. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    认领(form 处收尾)(PM 派发,objectui 分片):session_01GTRjn8xBqp75dk7kFupVRt,分支 claude/issue-5086-form-mdx-import,os-dev 席即将开工。

    状态核对:本卡三处中 grid 处已随 PR #5103 落 main(b29488f3e),view 处已随 PR #5109 验收 undraft + auto-merge 在途 —— 仅余 form 处(content/docs/plugins/plugin-form.mdx 的 import type { FormSchema, FormField } from '@object-ui/plugin-form')。本席修最后一处,PR 用 Fixes #5086 收卡(合入时另两处均已落或在队列中,若 PR #5109 意外未合,GitHub 关卡以本 PR 合入为准,PM 会复核后处置)。文件面与在飞席位(plugin-form README 是 #5098 席 —— 不同文件、同包,注意不相交;RelatedList、SchemaRenderer)零重叠。


    Generated by Claude Code

  6. yinlianghui commented on Aug 18, 2026

    @yinlianghui
    CollaboratorAuthor

    form 处(最后三分之一)已随 PR #5119 处理(draft,Fixes #5086 —— 三处至此落齐,故本 PR 直接收卡而非 Part of)。

    基线 origin/main @ 99d5659df,即 PR #5109 的合入 commit —— 开工时复核确认 view 处已落 main(不再只是「在 auto-merge 队列」),grid 处更早随 PR #5103 落在 b29488f3e。

    复核结论与卡面逐字一致,证据取自已构建的 dist/index.d.ts,用 TS 编译器 API checker.getExportsOfModule(#5043 规格),非 grep src:

    • @object-ui/plugin-form 共 51 个导出名(与卡面记的 51 相符),FormSchema / FormField 均 ABSENT。该包 entry 上的 form 类型是逐容器的那批:TabbedFormSchema、WizardFormSchema、ModalFormSchema、SplitFormSchema、DrawerFormSchema、MasterDetailFormSchema。
    • 真身 @object-ui/types(675 个导出名)两个都 PRESENT —— FormField @ packages/types/src/form.ts:898,FormSchema @ :1055。packages/plugin-form/src 只 import 不 re-export,与卡面判断一致。

    编译期证据(旧 import 行照抄的后果),与 grid / view 两处所记的 TS2305 同形:

    error TS2305: Module '"@object-ui/plugin-form"' has no exported member 'FormSchema'.
    error TS2305: Module '"@object-ui/plugin-form"' has no exported member 'FormField'.
    

    同名陷阱侦查(grid 处 GridSchema / GridColumn 的前车)——form 这两个名字不构成 grid 那种误导,但有一处值得记录:

    按 #5011 定调,未为让旧路径成立而新增 re-export。

    额外发现:旧块除 import 指错外,示例 body 的 fields: [...] 还是语法错误(TS1109: Expression expected.)—— 旧块是双重不可编译。PR 已在同一块内给出可编译的真实示例。

    半径外:同文件另外两段(### Form Field 参考块、### Form with Validation 示例)的键面漂移未夹带,已查重后另立 #5118(#5075 的文档站镜像,unassigned)。

    本卡三处至此全部处理完毕:grid → PR #5103(已落),view → PR #5109(已落),form → PR #5119。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationpm:queue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions