外观
如何理解TypeScript、运行时校验与 API 契约?
标准回答
TypeScript 的类型在编译后主要用于开发约束,不能保证服务器真的返回声明的结构。网络输入、配置、持久数据和第三方响应仍需运行时校验,校验失败要有明确错误而不是依靠类型断言跳过。
契约应统一字段含义、可空性、错误分类、版本、分页和时间格式。任务接口区分已受理与最终完成,写入接口表达幂等冲突;客户端不能用 HTTP 200 代替业务状态,也不能遇到任何非 200 就重新创建任务。
服务端还需执行授权与业务约束,JSON Schema 只检查结构的一部分。生成客户端可以减少字段漂移,但仍需核对版本兼容和运行时行为。新增可选字段通常比改变既有字段含义更易兼容。
追问与回答
为什么 as SomeType 不能证明数据合法
断言告诉编译器采用某种类型,不会在运行时逐字段检查。需要真正的解析与校验函数。
如何设计错误码
让稳定机器码表达可恢复类别,面向用户的信息解释行动,关联 ID 支持定位;不要依赖解析任意自然语言错误文本。
易混淆点
- 把前端类型检查当作服务端输入验证。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q185