症状
在严格模式下,编译器对一个已知可能为 undefined 的值报 TS18048。该值通常来自数组索引、map 的 get 或可选属性,随后未加守卫就被使用。TS18048 与 TS2532 相关;两者都要求你在代码依赖它之前决定值缺失时该怎么办。
诊断
在值产生处立即收窄;用空值合并提供默认;搜索其来源是索引、get 还是可选字段。
const x = arr[i]; if (x === undefined) return; use(x)
根因
一个类型上可能为 undefined 的值被当作已定义使用。严格模式要求先用分支或默认值确定其存在。
修复
产出该值处收窄:不可接受缺失时提前返回,缺失对应回退时用空值默认,或收紧函数签名使需要确定值的调用方不会拿到 undefined。避免断言运算符,它把失败推迟到运行时。
验证
重新运行类型检查确认错误清除,并新增覆盖缺失路径的测试。存在与缺失两种情况都符合设计才算验证通过。
常见陷阱
用非空断言强行使用会在缺失时运行时崩溃;应显式设计缺失时的行为。