为什么 TypeScript 不能替代接口数据校验?
参考答案
TypeScript 的类型通常在编译后被擦除,网络响应、localStorage 和第三方脚本返回值并不会因为写了接口声明就自动符合类型。response.json() 后直接断言,只是跳过了一层编译器疑问。
边界校验应检查字段存在性、具体类型、枚举范围和业务约束,再把验证成功的值传给内部逻辑。复杂结构可采用 schema 库,并从 schema 推导类型,减少静态定义与运行时规则分叉。
校验失败时要保留可诊断的信息,但对用户展示安全、可理解的错误。校验不应遍布所有内部函数;更合理的做法是在不可信输入进入系统的地方完成,再利用类型系统约束后续流转。