类型体操的边界:哪些类型该在运行时校验
把接口响应的类型写得再精确,也拦不住线上返回一个 null。类型和校验是两件事,各管一段,边界处必须交接。
本文目录
我现在的约定很简单:进程内部用类型,进程边界用校验。跨边界的输入一律先过 schema,再进入类型系统。
ts
const payload = parseOrderResponse(raw);
if (!payload.ok) {
return { status: "invalid", reason: payload.error };
}
const order: Order = payload.value;- 接口、消息队列、本地存储、URL 参数都属于边界
- 类型断言只允许出现在校验之后,且写清原因
- 校验失败要有一致的错误结构,别让调用方猜