TypeScript 类型收窄

typescript/narrowing2026-10-16 11:56:38

TypeScript 类型收窄是编译器根据条件判断和控制流,把某个位置上可能的值类型缩小到更具体范围的过程。

判别联合与穷尽检查

判别联合用共同字段区分不同结构,控制流检查后即可安全访问相应属性:

type LoadState<T> =
  | { status: "loading" }
  | { status: "success"; data: T }
  | { status: "error"; message: string };

function describe(state: LoadState<string>): string {
  switch (state.status) {
    case "loading": return "加载中";
    case "success": return state.data;
    case "error": return state.message;
    default: {
      const exhaustive: never = state;
      return exhaustive;
    }
  }
}

启用严格检查,尤其是 strictNullChecks,有助于显式处理 null 与 undefined。不要靠非空断言掩盖尚未处理的加载状态。

参考:TypeScript 官方类型收窄文档。

本页目录