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

TypeScript:@ts-ignore对未重赋值的let占位变量无效问题

问题解答

1. @ts-ignore 的生效逻辑

@ts-ignore 是 TypeScript 官方提供的注释,仅能忽略下一行代码中 TypeScript 自身的类型检查错误(比如类型不兼容、访问不存在的属性这类编译层面的类型问题)。

你遇到的 no-unused-vars(未使用变量)和 prefer-const(建议用const替代let)属于 ESLint 的代码规范规则警告/错误,不属于 TypeScript 类型检查的范畴,所以 @ts-ignore 对这类报错完全无效。

2. 解决 '_' is never reassigned 错误的方案

方案1:用 ESLint 专属注释精准忽略规则

直接针对这两个 ESLint 规则添加忽略注释,比 @ts-ignore 更精准:

const stuff = useLazyQuery(QUERY);
// eslint-disable-next-line no-unused-vars, prefer-const
let [_, { data }] = stuff;
const [someFunction, { loading }] = stuff;

方案2:用空占位符避免声明无用变量

数组解构时可以直接用空占位符跳过第一个元素,不用显式声明 _,从根源上消除未使用变量的问题:

const stuff = useLazyQuery(QUERY);
let [, { data }] = stuff; // 空占位符替代_,不生成无用变量
const [someFunction, { loading }] = stuff;

方案3:拆分解构,合理声明变量

更规范的写法是先把所有结果解构为常量,再单独将需要修改的 data 重新声明为 let:

const [someFunction, { data: initialData, loading }] = useLazyQuery(QUERY);
let data = initialData;
data = 'whatever'; // 直接修改data即可

这种写法既符合 TS 和 ESLint 的规范,也避免了冗余代码,是最推荐的方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:03:38