label / description / messages / error 使用指南
📋 快速对比
一句话记忆:
.label()告诉错误消息“这个字段叫什么”。.description()告诉页面或文档“这个字段是干什么的”。.messages()告诉验证器“某类错误要显示什么话”。.error()只是.messages()的短别名,适合想写得更短时使用。
🎯 详细说明
label(标签)
作用: 在错误消息中替换字段名
使用场景:
- 让错误消息更友好
- 中文化字段名
- 简化技术字段名
示例:
完整示例:
description(描述)
作用: 提供字段的详细说明
使用场景:
- 表单输入提示
- API文档生成
- Schema文档
- 帮助用户理解字段用途
示例:
在表单中使用:
在导出 / 文档工具中:
SchemaUtils.toMarkdown()、导出器或你自己的表单渲染层,通常会再把 _label 映射成展示标题。
messages(自定义错误消息)
作用:覆盖某些验证规则失败时的提示文案。
使用场景:
- 必填、格式、长度、范围、正则等错误需要业务化文案
- 需要在消息中引用字段标签
{{#label}} - 需要统一接口错误消息风格
常用 key:
如果不确定具体 key,可以先查看验证结果里的 errors,再按返回的错误类型覆盖。
error(messages 的别名)
作用:与 .messages() 完全相同,内部都会写入 _customMessages。
建议:
- 团队喜欢语义清楚时,用
.messages()。 - 单个字段只想快速写错误文案时,用
.error()。 - 同一个字段上不要同时混用
.messages()和.error()来表达不同含义,因为它们只是同一件事。
💡 最佳实践
1. label 是必需的(用户可见字段)
2. description 是可选的(需要说明时使用)
3. 组合使用示例
📊 使用场景对比
🎨 实际效果
验证错误显示
表单渲染
✅ 总结
label
- 必需性: 用户可见字段推荐使用
- 用途: 让错误消息更友好
- 位置: 错误消息、表单标签
- 格式: 简短的名词(2-6个字)
description
- 必需性: 可选,需要说明时使用
- 用途: 帮助用户理解字段用途
- 位置: 表单提示、API文档
- 格式: 完整的句子或短语
推荐组合
记住: label用于错误消息和展示标题来源,description用于帮助说明!
对应示例文件
示例入口: label-vs-description.ts
说明: 直接展示 _label / description 在 schema 中的实际落点,以及验证错误如何消费 label。