是否存在tsconfig.json检测空数组访问undefined的编译标志?
TypeScript空数组属性访问的编译检查方案
目前TypeScript没有专门的编译标志直接强制必须使用可选链(?.),但可以通过开启严格模式相关选项,让编译器在这类潜在错误场景下抛出编译错误,倒逼你采用安全的访问方式。
关键编译选项
strictNullChecks:开启后,TypeScript会严格校验null和undefined类型。当filteredItem是空数组时,filteredItem[0]的类型会被推断为ICartItem | undefined,此时直接访问.quantity会触发编译错误,提示你不能在undefined上访问属性。这时你就必须用filteredItem[0]?.quantity这类安全写法修复问题。strict:这是严格模式的总开关,开启后会自动启用strictNullChecks等一系列严格检查规则,能全面提升代码的类型安全性,更推荐直接开启这个选项。
tsconfig.json配置示例
{ "compilerOptions": { "strict": true // 也可以单独开启:"strictNullChecks": true } }
其他安全写法参考
除了可选链,你也可以先判断数组元素是否存在再访问属性,比如:
const validateCartItem = (filteredItem: ICartItem[]) => { if (!filteredItem[0] || !filteredItem[0].quantity) return setExistCartQuantity(0); // 后续逻辑 ... };
内容的提问来源于stack exchange,提问作者SKeney
相关产品推荐
相关产品推荐

