Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

object-grid 声明的 data 输入类型是 array(内联行),而契约类型是 ViewData(对象)—— 照设计器写出的元数据 spec 解析不过 #5090

Closed

Description

@yinlianghui

发现于 #5065 的实施(plugin-grid README 示例键面重写)。Filed unassigned, not claiming.

#5065 是 README 侧;本卡是声明面与契约类型不一致,另一性质,按纪律不夹带进那个 PR。

现象

同一个 data 键,三处说法不同:

处 说的是什么
packages/plugin-grid/src/index.tsx:154(GRID_QUERY_INPUTS) { name: 'data', type: 'array', label: 'Static Data', description: 'Inline rows, …' } —— 声明成数组
packages/types/src/objectql.ts:556 data?: ViewData —— ViewData 是 spec 的辨识联合对象(provider: 'object' | 'api' | 'value' | 'schema',每支 strict);内联行那一档是 { provider: 'value', items: [...] }
packages/plugin-grid/src/ObjectGrid.tsx:392(getDataConfig) if (Array.isArray(schema.data)) → 转成 { provider: 'value', items: schema.data } —— 运行时两种都吃

GRID_QUERY_INPUTS 是发布给设计器面板与生成 sdui-intrinsics.d.ts 的那份声明面
(该块的注释明确说,发布它的目的正是「让 manifest、.d.ts、设计器与渲染器终于一致」)。
所以照它写 data: [ …行… ] 的作者:

  • 运行时能跑(靠 getDataConfig 的数组容忍支路);
  • 但 tsc 不过 —— ObjectGridSchema['data'] 是 ViewData,数组不属于任何一支;
  • 严格按 spec 解析同样不过。

顺带:该 description 写「the deprecated staticData is the same thing」。staticData
(objectql.ts:637,any[],已 @deprecated)确实就是数组档 —— 也就是说 data 的这条
声明实际描述的是那个已弃用键的形状,而不是 data 自己的。

复核方式

sed -n '154p' packages/plugin-grid/src/index.tsx
grep -n 'data?: ViewData' packages/types/src/objectql.ts
sed -n '388,400p' packages/plugin-grid/src/ObjectGrid.tsx   # Array.isArray 容忍支路

编译探针(strict、对 dist/index.d.ts):

const a: ObjectGridSchema = { type: 'object-grid', objectName: 'u', data: [{ id: 1 }] };

报 TS2322,右侧列出 provider: 'object' | 'api' | 'value' | 'schema' 四支,数组不在其中。

同族

分级

交 PM 分诊。今天没有人被报错拦住(运行时容忍),但设计器教出来的元数据过不了 spec 解析。

Activity

  1. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    补:正文由 issues 端点存储时会剥掉末尾 footer,故以评论补齐。已读回确认正文完整、无 <+字母被吞。


    Generated by Claude Code

  2. self-assigned this
    on Aug 17, 2026
  3. yinlianghui commented on Aug 17, 2026

    @yinlianghui
    ContributorAuthor

    认领(PM 派发,objectui 分片):session_01GTRjn8xBqp75dk7kFupVRt,分支 claude/issue-5090-grid-data-input-decl,os-dev 席即将开工。

    范围声明:半径是 packages/plugin-grid/src/index.tsx 的 GRID_QUERY_INPUTS 声明块(+ 其生成物/测试/changeset)—— 把 data 的声明面对齐契约类型 ViewData(#4648 option B + carve-out 裁定后的残留修正)。⛔ 不动 ObjectGrid.tsx 的运行时容忍支路(#5068 家族,另案)、⛔ 不动 packages/types。与在飞席位(SchemaForm a11y、plugin-form/plugin-view README、plugin-grid mdx)文件不相交 —— 注意 #5087 席动的是 content/docs/plugins/plugin-grid.mdx,本卡动的是 packages/plugin-grid/src/index.tsx,同包不同文件。


    Generated by Claude Code

  4. added a commit that references this issue on Aug 23, 2026
    27c9cbd
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 workingpm:queue

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions