背景故事(请随意跳到问题所在)
我正在尝试解构来自 Apollo 的响应useLazyQuery
,然后更改一个变量。如果没有 Typescript,这将是两行简单的代码:
let [someFunction, { data, loading }] = useLazyQuery(QUERY);
data = 'whatever'
然而,这冒犯了 Typescript,因为我正在创建所有变量let
,即使大多数变量没有改变。因此,我更改了代码以将大部分响应解构为常量,但有一个例外:
const stuff = useLazyQuery(QUERY);
let [_, { data }] = stuff; // get one variable as a non-constant
const [someFunction, { loading }] = stuff; // get the rest as constants
问题是,我仍然收到 TypeScript 错误/警告:
77:8 警告 '_' 被分配了一个值但从未使用过 no-unused-vars
77:8 错误“_”永远不会重新分配。使用'const'代替prefer-const
当然,_
只是一个帮助我解构的占位符data
,所以不应该重新分配它......但需要它才能let
使解构工作。
问题
我本以为我可以_
通过添加@ts-ignore
评论来告诉 Typescript“不用担心,只需忽略它”:
const stuff = useLazyQuery(QUERY);
// @ts-ignore
let [_, { data }] = stuff; // get one variable as a non-constant
const [someFunction, { loading }] = stuff; // get the rest as constants
但所做的只是添加一个关于我应该如何使用的新警告,@ts-expect-error
而不是@ts-ignore
......它并没有消除关于我的_
变量的警告/错误。
问题(两个相关的问题)
我认为
@ts-ignore
忽略了下一行的所有警告/错误;谁能解释一下 Typescript 如何决定哪些警告/错误@ts-ignore
实际上被忽略,哪些不被忽略?谁能解释一下我如何才能让 Typescript 停止抱怨
'_' is never reassigned. Use 'const' instead
错误(使用@ts-ignore
或其他任何东西)......而不放弃解构等基本语言功能?
需要澄清的是:上述错误来自 es-lint 而不是 TS 本身。您需要禁用它。
您可以使用:
或者