用途:当类型与运行时值不一致、TypeScript 未报错却出现运行时崩溃,或需要理解类型系统局限时使用。核心观点是 TypeScript 并非健全(sound),静态类型不保证运行时值,它为了便利牺牲了部分健全性。
主要能力:梳理常见健全性陷阱,包括未检查的数组越界访问(arr[5] 类型为 number 实为 undefined)、类型断言绕过检查、any 类型、对象索引签名返回 undefined、函数参数被可变修改、回调使类型收窄失效、外部类型声明不准确、可选属性与结构化类型带来的可赋值性问题。
使用方式:用收窄替代断言,如 typeof val === 'number' 后再调用方法;用可选链 arr[10]?.toFixed();在索引签名中显式加入 undefined;用 readonly 参数防止修改;用 unknown 替代 any;在回调前先捕获值;对外部数据(API、JSON、用户输入)做运行时校验。可启用 strictNullChecks、noUncheckedIndexedAccess、strictFunctionTypes 等严格选项。
适用场景:调试“不可能”的运行时错误、评估严格选项的取舍、编写防御性代码。
限制:资料未提供安装命令、平台支持、收费或价格信息;内容基于《Effective TypeScript》第 48 条,启用严格选项会增加使用摩擦。