You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让TypeScript编译器识别字符串索引对象取值可能为undefined

解决方案

开启 TypeScript 编译配置中的 noUncheckedIndexedAccess 选项即可实现你需要的效果。

具体操作

  • 打开项目根目录的 tsconfig.json 文件
  • 在 compilerOptions 配置项中添加如下配置:
{
  "compilerOptions": {
    "noUncheckedIndexedAccess": true
  }
}
  • 开启后,所有通过索引(字符串索引、数字索引)访问对象属性的返回值类型都会自动加上 undefined,你的示例代码就会触发预期的编译错误:
const keyValueMap: {[key: string]: string} = {};
keyValueMap["foo"]="bar";

// 此处会抛出类型错误:不能将类型“string | undefined”分配给类型“string”
const valueOrUndefined: string = keyValueMap["someKey"];

注意事项

  • 该配置会全局生效,所有数组通过下标访问的返回值也会自动带上 undefined,如果确认对应下标一定存在,可以使用非空断言操作符 ! 规避报错,示例:arr[0]!
  • 开启该配置不会影响你提到的联合类型索引的校验逻辑,原有校验规则可以正常运行

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:36:05