H5 TypeScript 运行时数据校验
H5 TypeScript 运行时数据校验
摘要:TypeScript 类型在编译后不会自动验证网络响应、浏览器存储或用户输入。本文介绍把不可信输入视为未知值,通过运行时检查逐步转换成可信业务数据。
一、区分静态声明与实际数据
为接口响应写一个类型,只能帮助编译器理解开发者的假设,并不能证明服务器真的返回该结构。网络数据、地址栏参数、持久化内容和跨窗口消息都属于外部输入。
边界数据应先按未知类型接收,在验证成功前不能直接当成业务对象使用。这样可避免字段缺失后在深层渲染逻辑中才崩溃。
二、从基本结构开始校验
先检查顶层是否为对象,再逐项检查必需字段的类型、范围和格式。可选字段应有明确默认规则,未知字段则按兼容策略忽略或保留。
字符串需要检查长度与允许格式,数字要排除非有限值和越界数据。枚举值解析失败时,应选择安全回退或报告协议错误。
三、返回可解释的解析结果
验证函数可以返回成功的数据,也可以返回包含字段位置和原因的错误列表。界面不必暴露内部细节,但日志和开发工具应能定位哪类数据不符合契约。
不要通过强制类型转换来绕过校验。转换本身没有运行时验证能力。
四、处理版本演进
服务端和客户端可能分批发布,响应字段会逐步演进。可选新增字段通常比删除或改变现有字段更兼容。客户端应明确默认值、未知枚举和旧缓存数据的处理方式。
持久化数据同样需要版本策略。读取旧版本时迁移或重建,不要假设本地内容永远符合当前接口。
五、避免重复校验
在系统边界验证一次后,可以把结果转换成可信的领域类型,再在内部层之间传递。不要每个组件都重新检查同一组字段,也不要让未经验证的原始结构传播到应用各处。
数据校验与业务规则不是一回事。字段类型正确不表示业务操作一定合法,还需在业务层验证状态和权限。
六、测试边界案例
覆盖缺失字段、错误类型、超长文本、空值、未知枚举和旧版本缓存。测试不仅应有正常响应,也要验证错误路径能被控制且不会造成部分界面更新。
七、总结
静态类型帮助组织代码,运行时校验负责确认外部数据是否符合预期。在输入边界完成校验并转换成可信模型,可以将协议错误限制在可诊断的位置。
- 点赞
- 收藏
- 关注作者
评论(0)