Typescript eslint 禁用 no-unused-vars

Posted

技术标签:

【中文标题】Typescript eslint 禁用 no-unused-vars【英文标题】:Typescript eslint disable no-unused-vars 【发布时间】:2020-01-25 15:50:57 【问题描述】:

我正在处理一个 Typescript React 项目,我通常将占位符变量放入代码中,以便在我开始实现所有内容之前对所有内容进行布局。这会导致一堆eslint no-unused-vars 错误,并让查找真正的错误成为一项挑战。

在我准备好之前如何全局禁用它?我使用了create-react-app my-app --typescript,不想弹出项目,但不确定如何禁用此警告。

我注意到package.json 中有一个eslintConfig 部分,所以我尝试关闭那里的错误,但它似乎不起作用,在编辑package.json 后是否需要运行命令或我的语法不正确吗?

"eslintConfig": 
    "extends": "react-app",
    "rules": 
      "no-unused-vars": "off"
    
 ,

更新


(删除tsconfig.json 引用)

我更新了我的package.json 并不断收到错误消息。

"eslintConfig": 
    "extends": "react-app",
    "rules": 
      "@typescript-eslint/no-unused-vars": "off"
    
  ,

我尝试将规则移动到项目根目录中的 .eslintrc.json 文件中,但似乎仍然没有关闭它。

似乎唯一可行的是将// eslint-disable-line @typescript-eslint/no-unused-vars 放在变量之后。

【问题讨论】:

应该有 tslint.json 如果没有你尝试创建一个你想要的规则 @Rikin 我需要在package.json 中输入一个条目来引用这个文件还是应该自动找到它?我尝试使用上面的规则部分在我的应用程序的根目录中创建tslint.json,但它似乎不起作用。 它应该是自动的,它由底层的 webpack 处理。如果您使用create-react-app,它应该已经为您创建了一个。我只是这样做了,它为我做到了 【参考方案1】:

我认为有些混乱。

问题和唯一答案都建议在tsconfig.json 中放置一个规则部分。这是我从未听说过的事情,文档或official schema 中也没有提及。

此外,问题是关于禁用 eslint 中的规则,因此规则更改应放在 .eslintrc.json 文件中(或问题中考虑的 package.json 中的 eslintConfig 部分)。

但这是 typescript 和 typescript-eslint 所以规则应该是:

> "@typescript-eslint/no-unused-vars" : "off"

并且有人链接到的答案中提出的hacky解决方案需要更改为(请注意,答案是关于js的eslint,而不是ts)。

/* eslint-disable @typescript-eslint/no-unused-vars */

这些解决方案对我有用...

+-- eslint@6.5.1  
+-- @typescript-eslint/eslint-plugin@2.3.2  
+-- @typescript-eslint/parser@2.3.2  

【讨论】:

感谢您的清理,我尝试了您的两个建议,但仍然收到消息,我是否需要做任何事情来让编译器识别更改或可能覆盖此问题的区域? 您是从命令行运行 eslint 还是仅在 IDE 中使用它?当我遇到问题时,我会先尝试从 cmdline 运行它。 谢谢!我只是在阅读您的答案并意识到我正在修改 eslint 版本而不是 typescript-eslint 版本之前浪费了很多时间...... 现在我知道有 eslint 和 typescript-eslint,这一切都说得通了(这在阅读文档和示例配置时并不是很明显)。谢谢提示【参考方案2】:

您可以在 package.json 文件中添加规则

"eslintConfig": 
  "rules": 
   "no-unused-vars": 0,
  "@typescript-eslint/no-unused-vars": 0

【讨论】:

谢谢,它对我有用,我在 eslintrc.js 文件中进行了更改。【参考方案3】:

由于您使用了create-react-app my-app --typescript,因此您的my-app/ 中应该已经为您创建了tsconfig.json

在您的tsconfig.json 中,您可以为您的打字稿编译器添加规则。


  "extends": [...],
  "compilerOptions": 
    ...
  ,
  "include": [...],
  "rules": 
    ...
    "no-unused-vars": "off"
    ...
  

【讨论】:

【参考方案4】:

在 eslintrc.json 中添加“规则”,您只需将 no-unused-vars 写入 0。

“规则”: “没有未使用的变量”:0

【讨论】:

【参考方案5】:

我遇到了类似的问题。这是我的解决方案:

    .eslintrc[.json] 重命名为.eslintrc.js 在前一个 Json 对象前面添加 module.exports = 。所以.eslintrc.js 看起来像这样:
module.exports =  
    ...
    "rules": ...,
    ... 

    根据您当前的环境设置"@typescript-eslint/no-unused-vars" 规则。这可以通过检查process.env.NODE_ENV 变量来实现。我的选择是在生产中出错并在其他情况下被警告。 sn-p 看起来像这样:
module.exports =  
    ...
    "rules": 
         ...
         "@typescript-eslint/no-unused-vars": process.env.NODE_ENV === "production" ? "error" : "warn"
    ,
    ... 

【讨论】:

这实际上是唯一对我有用的解决方案(“react-scripts”:“4.0.3”)。【参考方案6】:

如果您使用 Create-react-app,则无需安装任何东西或 Eject,您只需转到/node_modules/react-scripts/config/webpack.config.dev.js. 在“新 ESLintPlugin”规则中添加:

'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'no-unused-vars': 0

【讨论】:

以上是关于Typescript eslint 禁用 no-unused-vars的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用@typescript-eslint/no-non-null-assertion 规则

Typescript eslint 禁用 no-unused-vars

使用 eslintrc 禁用特定文件结尾的 ESlint 规则

关闭接口的 eslint 规则?

无法加载插件@typescript-eslint:找不到模块'eslint-plugin-@typescript-eslint'

ESLint 无法识别“@typescript-eslint/eslint-plugin”