H5 TypeScript 运行时数据校验

举报
yd_229723446 发表于 2026/10/31 12:13:55 2026/10/31
【摘要】 H5 TypeScript 运行时数据校验摘要:TypeScript 类型在编译后不会自动验证网络响应、浏览器存储或用户输入。本文介绍把不可信输入视为未知值,通过运行时检查逐步转换成可信业务数据。 一、区分静态声明与实际数据为接口响应写一个类型,只能帮助编译器理解开发者的假设,并不能证明服务器真的返回该结构。网络数据、地址栏参数、持久化内容和跨窗口消息都属于外部输入。边界数据应先按未知类型...

H5 TypeScript 运行时数据校验

摘要:TypeScript 类型在编译后不会自动验证网络响应、浏览器存储或用户输入。本文介绍把不可信输入视为未知值,通过运行时检查逐步转换成可信业务数据。

一、区分静态声明与实际数据

为接口响应写一个类型,只能帮助编译器理解开发者的假设,并不能证明服务器真的返回该结构。网络数据、地址栏参数、持久化内容和跨窗口消息都属于外部输入。

边界数据应先按未知类型接收,在验证成功前不能直接当成业务对象使用。这样可避免字段缺失后在深层渲染逻辑中才崩溃。

二、从基本结构开始校验

先检查顶层是否为对象,再逐项检查必需字段的类型、范围和格式。可选字段应有明确默认规则,未知字段则按兼容策略忽略或保留。

字符串需要检查长度与允许格式,数字要排除非有限值和越界数据。枚举值解析失败时,应选择安全回退或报告协议错误。

三、返回可解释的解析结果

验证函数可以返回成功的数据,也可以返回包含字段位置和原因的错误列表。界面不必暴露内部细节,但日志和开发工具应能定位哪类数据不符合契约。

不要通过强制类型转换来绕过校验。转换本身没有运行时验证能力。

四、处理版本演进

服务端和客户端可能分批发布,响应字段会逐步演进。可选新增字段通常比删除或改变现有字段更兼容。客户端应明确默认值、未知枚举和旧缓存数据的处理方式。

持久化数据同样需要版本策略。读取旧版本时迁移或重建,不要假设本地内容永远符合当前接口。

五、避免重复校验

在系统边界验证一次后,可以把结果转换成可信的领域类型,再在内部层之间传递。不要每个组件都重新检查同一组字段,也不要让未经验证的原始结构传播到应用各处。

数据校验与业务规则不是一回事。字段类型正确不表示业务操作一定合法,还需在业务层验证状态和权限。

六、测试边界案例

覆盖缺失字段、错误类型、超长文本、空值、未知枚举和旧版本缓存。测试不仅应有正常响应,也要验证错误路径能被控制且不会造成部分界面更新。

七、总结

静态类型帮助组织代码,运行时校验负责确认外部数据是否符合预期。在输入边界完成校验并转换成可信模型,可以将协议错误限制在可诊断的位置。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。