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

TypeScript访问对象属性时报错ts(1003)标识符预期如何修复?

问题原因

你遇到的Identifier expected. ts(1003)报错属于语法规范错误,是因为动态访问对象属性时写了多余的点号:
JS/TS中访问对象属性有两种合法写法:

  • 静态属性访问:对象.属性名,要求属性名是固定的合法标识符
  • 动态属性访问:对象[变量/表达式],不需要在方括号前额外加点号
    你写的otherPokemon.base.[key]多了一个多余的点,违反了语法规范,虽然部分打包/运行环境做了语法兼容让代码可以实际运行,但TypeScript的静态检查会直接识别为语法错误标红。

解决方法

把otherPokemon.base.[key]里多余的点号删掉,改成otherPokemon.base[key]即可。

修改后的子组件代码参考:

<List component="div" disablePadding>
  {Object.entries(pokemon.base).map(([key, value]) => {
    console.log(otherPokemon.base[key])
    return(
    <ListItem>
        <ListItemText>{key + ": " }<span className={value > otherPokemon.base[key] ? classes.more : classes.less}>{value}</span></ListItemText>
    </ListItem>)
  })}
</List>

可选优化

如果修改后依然有类型不匹配的标红,可以给动态key加上类型断言,明确告知TS这个key属于base对象的合法属性:

otherPokemon.base[key as keyof typeof otherPokemon.base]

内容的提问来源于stack exchange,提问作者m.said

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:21:04