# 契约、类型与转换器

生成 TypeScript 客户端并验证兼容旧版本适配的契约变更。

需要 WU CLI `1.2.0`，应用 API 需要 WU Framework `4.0.0`。请检查 `wu --version` 和项目依赖。

```sh
wu contracts types counter-v1.json --out client.d.ts
wu contracts types counter-v1.json counter-v2.json --out clients.d.ts
wu contracts check counter-v1.json counter-v2.json --json
wu contracts check counter-v1.json counter-v2.json --translators translators.mjs --json
```

JSON 文件使用 `defineService` 接受的描述格式。CLI 从项目加载 `wu-framework/services`，而不是全局副本。每个文件必须是有效 JSON，且不超过 `1 MiB`。`types` 将 TypeScript 声明写入标准输出，或使用 `--out` 写入独立 `.d.ts` 文件。

多个契约生成 `ServiceClientV1`、`ServiceClientV2` 等名称；若主版本相同，则使用完整版本，例如 `ServiceClient_1_2_0`。`check` 恰好接受旧、新两个契约，不接受 `--out`。`types` 不接受 `--json` 或 `--translators`。

<span id="compatibilidad-con-traductores"></span>

<span class="section-anchor" id="section-1"></span>

## 转换器兼容性

`--translators` 模块以 `default` 或 `translators` 导出数组。每项包含 `definition` 和 `methods`，与 `provideService` 接受的格式相同。检查将已覆盖变更移入 `translated`，未覆盖变更保留在 `changes`。实现与测试转换器见[版本化服务](/zh-cn/docs/framework/service-evolution/)。

| 退出码 | 含义 |
| --- | --- |
| `0` | 契约兼容或类型生成成功。 |
| `1` | 存在未覆盖的不兼容变更。 |
| `2` | 文件、描述、依赖或选项无效。 |

兼容结果验证的是契约结构，不证明转换函数对所有值都正确。更换提供方前，应在运行时测试输入输出示例、验证失败和权限。