💡
原文英文,约500词,阅读约需2分钟。
📝
内容提要
在项目中,我们需要验证一个对象,确保至少一个动态定义的键有有效值。通过MetadataMap定义有效键和类型,使用TypeScript生成接口,并创建Yup验证模式。动态生成Yup模式以避免硬编码,并添加规则确保至少一个键有值。最终验证示例显示,尽管某些键未定义,仍能通过验证。
🎯
关键要点
- 在项目中需要验证一个对象,确保至少一个动态定义的键有有效值。
- 使用MetadataMap定义有效键及其类型。
- 动态生成TypeScript接口以确保类型安全。
- 创建Yup验证模式以根据MetadataMap验证对象。
- 避免硬编码键以提高解决方案的可维护性。
- 使用keyof和映射类型生成TypeScript接口。
- 动态创建Yup模式以匹配MetadataMap中的键和类型。
- 添加规则确保对象中至少有一个键具有有效值。
- 最终验证示例显示,尽管某些键未定义,仍能通过验证。
❓
延伸问答
如何在TypeScript中动态生成接口?
可以使用keyof和映射类型从MetadataMap动态生成TypeScript接口,以确保类型安全。
Yup验证模式是如何创建的?
通过使用Object.keys和reduce方法,将MetadataMap中的每个键映射到相应的Yup验证器,从而动态创建Yup验证模式。
如何确保对象中至少有一个键具有有效值?
在Yup模式中添加.test方法,检查对象中是否至少有一个键的值非undefined。
MetadataMap的作用是什么?
MetadataMap定义了有效的键及其对应的类型,用于动态生成接口和验证模式。
为什么要避免硬编码键?
避免硬编码键可以提高解决方案的可维护性,使得在MetadataMap更新时,相关的验证模式和接口也能自动更新。
最终验证示例的结果是什么?
最终验证示例显示,尽管某些键未定义,仍能通过验证,只要至少有一个有效键存在。
🏷️
标签
➡️