# @enonic/ui-types 中文文档

规范地址：https://npmcn.com/package/%40enonic/ui-types/

版本：0\.7\.0
npm 元数据更新时间：2026-11-04T12:20:35.095Z
中文译文更新时间：2026-11-14T02:29:02.788Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40enonic/ui-types
原文对照：https://npmcn.com/package/%40enonic/ui-types/?lang=original
项目主页：https://github.com/enonic/npm-enonic-ui-toolkit#readme
源码仓库：https://github.com/enonic/npm-enonic-ui-toolkit

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：34.3 kB，5 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：0 个
- 首次发布：2026-09-07T06:45:10.184Z
- 最新版本发布：2026-11-04T12:20:34.677Z
- 近 30 天下载量：2506（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 8 个）

## 中文简介

Enonic UIs 的共享类型脚本类型和行为合同

## 安装

```sh
npm install @enonic/ui-types
```

也可以使用：`pnpm add @enonic/ui-types`、`yarn add @enonic/ui-types`、`bun add @enonic/ui-types`

## README

# @ enonic/ ui 类型

类型和没有其它:没有运行时间,没有依赖,没有进口.

属于这里的有两种类型——基础域类型不止一个软件包或应用程序股份 (内容、主要内容、计划形状),以及程序之间的行为契约 如果双方必须商定一个形状,它们不能从对方进口. 由一个组件读取的道具类型不是其中之一.

```sh
pnpm add -D @enonic/ui-types
```

## 挂载合同

贝壳与其上载的模块之间的合同: 屏幕或面板,由 另一种应用程序,在运行时发现,并制成罐壳的容器。 壳 创建一个打开的阴影根, 将模块交给一个容器 和一个 `Host`和电话 `mount`;模块拥有容器内的一切,外壳拥有周围的页面.

| 类型 | 这是什么 |
| --- | --- |
| `Readable<T>` | `get()` 对于当前值, `listen` 更改——它从不恢复订阅 |
| `ToastTone` | `info`, (中文(简体) ), `success`, (中文(简体) ), `warning`, (中文(简体) ), `error` 作为 `@enonic/ui`是因为 `Toast` 给他们起名 |
| `NotifyOptions` | `autoHide`, (中文(简体) ), `lifetimeMs` |
| `Host` | 每个山都得到什么 `baseUrl`, (中文(简体) ), `extension`, (中文(简体) ), `locale`, (中文(简体) ), `theme`, (中文(简体) ), `visible`, (中文(简体) ), `notify` |
| `Routed` | 带url 段的挂载会添加什么: `path`, (中文(简体) ), `navigate` 与 `NavigateOptions` |
| `RoutedHost` | `Host & Routed` 何等的接口 拥有一段的摩托 |
| `MountOptions<H>` | 论点 `mount`数字 : `container` 财务报告和审定财务报表 `host`· ; `H` 默认为 `Host` |
| `Unmount` | 什麽 `mount` 返回,同步; 具有同位素且不能投掷 |
| `Mount<H>` | 函数 模块的条目导出 —— 用此注释 |
| `Module<H>` | 模块的输入输出整体 |

一个主机宣布其接口的交接方式是哪个; XP 设置' `settings.section` 手执a `RoutedHost`。一个宿主的山峰没有部分的手 `Host` 以自身能力扩展, 和一个模块 `RoutedHost` 不受影响。 类型不能表达的规则在 在TSDoc, 提供商读取它们:一个模块从不触及其容器外的页面, 每个跨越边界的字符串都是本地化的,一个模块实例可以服务于几个挂载和 `Host.extension` 说这是哪一个, 一个被取消的主机 回答每一次的电话 一个不op.

宣言提到DOM 自由用于 `HTMLElement`消费者的tsconfig必须包括它, 浏览器项目会做的.

## 形式和财产合同

XP自己的JS图书馆将一个表格和一棵财产树序列化为: `lib-content` 内容 类型, `lib-schema` 对于内容类型、混合或形式碎片,以及应用程序的服务器 它从描述器中读取,例如id提供者的配置——以及 `@enonic/input-types` 把它们读回来 同样的方言 `@enonic-types/core` 宣布为 `FormItem`,所以一个针对 XP 类型输入的服务器在没有铸模的情况下生成这些;在这里,每个字段 XP 省略是可选的, `inputType` 是任意字符串,一个配置值是 `unknown`,因为那是 来了.

| 类型 | 这是什么 |
| --- | --- |
| `FormJson` | 表格:按顺序排列的项目 |
| `FormItemJson` | 一个项目—— `InputJson`, (中文(简体) ), `ItemSetJson`, (中文(简体) ), `OptionSetJson`, (中文(简体) ), `LayoutJson` 或者说 `FormFragmentJson`,通过 `formItemType` |
| `FormItemType` | 歧视者: `Input`, (中文(简体) ), `ItemSet`, (中文(简体) ), `OptionSet`, (中文(简体) ), `Layout`, (中文(简体) ), `FormFragment` |
| `OccurrencesJson` | `minimum` 财务报告和审定财务报表 `maximum`; 0 的最大值为无约束 |
| `InputConfigJson` | 输入类型配置为 XP 的库发送它 —— 每个属性下的一个 scalar、 列表或对象 |
| `OptionSetOptionJson` | 一个选项: `name`, (中文(简体) ), `label`, (中文(简体) ), `default`页:1 `items` |
| `PropertyTreeJson` | 属性树:其数组 |
| `PropertyArrayJson` | 一个命名数组 `ValueTypeName`页:1 `values` |
| `PropertyValueJson` | 下方为平板 `v` 或树下筑巢 `set` |
| `ValueTypeName` | xP 知道的值类型, 如 `ValueTypes` 给他们起名 |

这个 `{ Input: { … } }` 方言,每个项目有一个包装键 是Content Studio的 REST 说话 内容工作室的客户端, 而且不在这里.

设置外壳在这些类型背后的表现——保持活性,隐藏的山上听到什么, 取消 —— 与外壳一起记录在应用程序设置中 `docs/extensions/`。 。 。 .

## 校长和任务

人民党自己宣布的是一项主要任务: `@enonic-types/core`是因为 `PrincipalKey`, (中文(简体) ), `User`, (中文(简体) ), `Group` 财务报告和审定财务报表 `Role`, (中文(简体) ), `@enonic-types/lib-task`是因为 `TaskInfo` —— 在此复制一个浏览器 程序不需要服务器软件包,并以类型测试为主,以便输入一个值 这里可以分配。 服务器为摘要省略的字段是可选的 。 读取和构建密钥 接下来的任务就是 `@enonic/ui-utils`part.

| 类型 | 这是什么 |
| --- | --- |
| `PrincipalType` | `user`, (中文(简体) ), `group`, (中文(简体) ), `role` ——主键自身前缀 |
| `UserKey`, (中文(简体) ), `GroupKey`, (中文(简体) ), `RoleKey` | `user:<idProvider>:<id>`, (中文(简体) ), `group:<idProvider>:<id>`, (中文(简体) ), `role:<id>` - 键是它的字符串 |
| `PrincipalKey` | 任何三个 |
| `User`, (中文(简体) ), `Group`, (中文(简体) ), `Role` | 键后的记录 : `type`, (中文(简体) ), `key`, (中文(简体) ), `displayName`以及那些东西 |
| `Principal` | `User | Group | Role`,缩入 `type` |
| `UserRecord`, (中文(简体) ), `GroupRecord`, (中文(简体) ), `RoleRecord`, (中文(简体) ), `PrincipalRecord` | 同样的没有 `type` ——一个REST层所发送的,读作: `Principal` 以 `toPrincipal` 从 `@enonic/ui-utils` |
| `TaskState` | `WAITING`, (中文(简体) ), `RUNNING`, (中文(简体) ), `FINISHED`, (中文(简体) ), `FAILED` |
| `TaskProgress` | `current` 联 合 国 `total`,以及 `info` 任务报告的内容,完成后的结果 |
| `TaskInfo` | 作为 XP 和内容工作室的任务资源来回答它 |

## 主题

主题偏好 XP的管理员应用程序通过一个存储条目共享. 阅读、写作 之后是 `@enonic/ui-utils`part.

| 类型 | 这是什么 |
| --- | --- |
| `Theme` | `light`, (中文(简体) ), `dark`, (中文(简体) ), `system` 用户选择什么; `system` 遵循操作系统 |
| `ResolvedTheme` | `light`, (中文(简体) ), `dark` ——何等一页作画,何等 `Host.theme` 携带 |

部分 [Enonic UI 工具包](https://github.com/enonic/npm-enonic-ui-toolkit)。 。 。 .

## 常见问题

### @enonic/ui-types 是什么？

Enonic UIs 的共享类型脚本类型和行为合同

### 如何安装 @enonic/ui-types？

在项目目录运行 npm install @enonic/ui-types，或使用 pnpm add / yarn add / bun add。

### @enonic/ui-types 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @enonic/ui-types 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @enonic/ui-types 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.12\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @enonic/ui-types 可以商用吗？

@enonic/ui-types 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @enonic/ui-types 的下载量有多少？

根据 npm 官方下载统计，@enonic/ui-types 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,506 次，日均约 84 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @enonic/ui-types 还在维护吗？

最新版本 0\.7\.0 发布于 2026/11/04（9 天前）；至今共发布 8 个版本，其中过去 12 个月发布了 8 个；首次发布于 2026/09/07。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

