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

为何将number类型值作为数组访问时TypeScript没有抛出编译错误

你遇到的这个情况是因为TS配置没有开启严格类型校验规则导致的。

具体原因

  • 你提供的示例代码中,test被显式声明为number类型,本身不支持下标索引访问,这类操作在严格校验模式下一定会触发TS类型报错。
const test : number = 123;
const test2 = test[3]; // 严格模式下此处会抛出类型错误
  • 你当前的tsconfig没有开启strict总开关,也没有单独开启noImplicitAny规则,在这种宽松配置下,TS会允许对任意类型执行索引访问操作,返回值默认推断为any类型,不会抛出错误。

修复方案

只需要在tsconfig的compilerOptions中添加以下任意一项配置即可:

  1. 开启完整严格模式(推荐,可覆盖所有常见类型校验场景)
{
  "compilerOptions": {
    // 保留你原有所有配置的基础上添加以下配置
    "strict": true
  }
}
  1. 仅单独开启禁止隐式any规则,仅针对这个问题修复
{
  "compilerOptions": {
    // 保留你原有所有配置的基础上添加以下配置
    "noImplicitAny": true
  }
}

修改配置后重新执行TS校验,就会得到预期的错误提示:类型“number”上不存在索引签名,因此无法使用类型为“number”的参数进行索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:15:03