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

为何TypeScript中对象解构会触发“不安全数组解构”错误?

问题分析与解决

这不是TypeScript的bug,而是**@typescript-eslint规则的误判**(具体是no-unsafe-assignment规则的错误提示)。

问题原因

你写的是标准的对象解构{ value, done },但ESLint的@typescript-eslint/no-unsafe-assignment规则内部逻辑存在疏漏:它错误地将IteratorResult类型的对象解构,识别成了数组解构操作,进而触发了“不安全数组解构”的错误提示。

你的第二种写法不报错,是因为没有使用解构,规则没有触发针对解构操作的检测逻辑,并非代码本身有差异。

解决方案

你可以选择以下任意一种方式解决:

  • 临时禁用该行规则:在解构代码行上方添加注释,跳过规则检测
    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
    const { value, done }: IteratorResult<ServiceLabel> = iterator.next();
    
  • 升级@typescript-eslint版本:该问题属于规则的已知bug,升级到最新稳定版的@typescript-eslint/eslint-plugin和@typescript-eslint/parser后,误判情况会被修复
  • 改用先存变量再取值的写法:也就是你已经验证过的第二种写法,绕开规则的误判逻辑

代码验证

你的代码本身没有逻辑疏漏,两种写法的运行逻辑完全一致,区别仅在于是否使用解构,而规则的误判只针对解构场景。

内容的提问来源于stack exchange,提问作者Josías Genem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:02:33