TypeScript2026.05.288 MIN READ

类型体操的边界:哪些类型该在运行时校验

把接口响应的类型写得再精确,也拦不住线上返回一个 null。类型和校验是两件事,各管一段,边界处必须交接。

本文目录

    我现在的约定很简单:进程内部用类型,进程边界用校验。跨边界的输入一律先过 schema,再进入类型系统。

    ts
    const payload = parseOrderResponse(raw);
    if (!payload.ok) {
      return { status: "invalid", reason: payload.error };
    }
    const order: Order = payload.value;
    先用 schema 收敛形状,再交给类型
    • 接口、消息队列、本地存储、URL 参数都属于边界
    • 类型断言只允许出现在校验之后,且写清原因
    • 校验失败要有一致的错误结构,别让调用方猜