如何配置tsconfig实现TypeScript数组索引的安全访问校验
有的,你可以通过开启 tsconfig.json 中 compilerOptions 下的 noUncheckedIndexedAccess 配置项实现该效果。
配置效果
开启该配置后:
- 所有通过动态下标索引得到的数组元素,类型会自动加上
| undefined联合类型,除非 TypeScript 可以 100% 确定该索引位置一定存在对应值 - 你给出的示例代码开启配置后,
x和y的类型都会被推断为string | undefined,而非默认的string,匹配运行时的实际情况 - 该配置同时也会作用于带索引签名的对象,例如声明为
{ [key: string]: number }类型的对象,通过任意字符串key取值时,返回类型也会自动变为number | undefined
注意事项
- 该配置仅在 TypeScript 4.1 及以上版本支持
- 若你使用固定长度的元组类型(例如
const arr: [string, string] = ['hello', 'world']),使用合法范围的整数下标(0、1)取值时,TypeScript 依然会推断为确定的非undefined类型,仅超出范围、非整数、动态值索引时才会附加undefined类型
配置示例
{ "compilerOptions": { "noUncheckedIndexedAccess": true // 其余原有配置保持不变 } }
内容的提问来源于stack exchange,提问作者Nino Filiu
相关产品推荐
相关产品推荐

