SuperAPI AI 工具集

type-narrowing

编程与开发

查看项目

更新于 10-16 00:06

技能介绍

用途:本技能用于处理联合类型、可空值、可辨识联合(标签联合)以及 TypeScript 报出“可能为 undefined”的场景,目标是通过控制流收窄类型,写出无需类型断言的更安全代码。

核心原则:当收窄可行时,绝不使用类型断言(as)。在 if 块内使用 as Type 通常意味着可以改用收窄。

主要收窄手段:null/undefined 检查(if (x) 或 if (x !== null));typeof 守卫区分 string 与 number;instanceof 守卫区分类实例;in 属性检查区分接口;可辨识联合通过 switch (x.kind) 分支;Array.isArray 区分单值与数组;提前 throw/return 让后续代码获得收窄。内置收窄不足时,可编写用户自定义类型守卫,使用类型谓词(如 pet is Cat)。

常见陷阱:typeof null 返回 "object",需先显式判空;假值检查会把 0、"" 一并排除;回调(如 setTimeout)不会保留外层收窄,需先用 const 捕获收窄后的值。

适用场景:处理 Type | null、string | number、带标签的联合类型,以及消除“possibly undefined”错误。

限制与说明:资料未提供安装命令、平台支持、收费或价格信息,暂未提供。内容基于《Effective TypeScript》第 22 条“Understand Type Narrowing”。