为什么 ESLint 会为 TypeScript 接口抛出“no-unused-vars”?

Nik*_*lov 33 typescript eslint

所以,我在 .ts 文件中有这段代码:

import {MicroEventInterface} from '../Interfaces';

export default class MicroEvent implements MicroEventInterface {

// code
Run Code Online (Sandbox Code Playgroud)

而 ESLint 会抛出这个错误:

错误

我在 ESLint 中有这个 TypeScript 配置:

typescript: {
    extends: [
        'plugin:@private/private/react' // private rep with React config
    ],
    parser: '@typescript-eslint/parser',
    plugins: [
        '@typescript-eslint',
        'import'
    ],
    settings: {
        'import/resolver': {
            'node': {
                'extensions': [
                    '.js',
                    '.jsx',
                    '.ts',
                    '.tsx'
                ],
                'moduleDirectory': [
                    'node_modules/',
                    'src/'
                ]
            }
        },
        react: {
            createClass: 'createClass',
            pragma: 'React',
            version: '0.14.9'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,一切似乎都很好,但我无法克服这个错误。

有什么建议?

谢谢!

更新:

看起来如果我console.log(---, MicroEventInterface);错误消失了。我认为,ESLint 并没有将其implements视为实际使用。

Bra*_*her 43

来源:我是该typescript-eslint项目的维护者。

@typescript-eslint工具的最新版本现在完全支持范围分析。

所以现在解决这个问题的步骤是:

  • 将您的版本更新到至少 v4.9.1@typescript-eslint/parser@typescript-eslint/eslint-plugin
  • 将您的 ESLint 版本至少更新到 v6.0.0
  • 更新您的配置以使用 @typescript-eslint/no-unused-vars

重新启动您的 IDE,您现在应该会看到正确的 lint 错误。

  • 在 `@typescript-eslint/parser+plugin` v4.14 和 `eslint` v7.18 上,实现的接口仍然会发生这种情况。 (4认同)

Chr*_*ner 21

使用@typescript-eslint/no-unused-vars-experimental和关闭@typescript-eslint/no-unused-vars

该问题在后一版本(实验性)中得到解决。

示例配置:

// .eslintrc
{
  ...
  "rules": {
    "@typescript-eslint/no-unused-vars": "off",
    "@typescript-eslint/no-unused-vars-experimental": "error"
  }
  ...
}

Run Code Online (Sandbox Code Playgroud)

  • @typescript-eslint/no-unused-vars-experimental 现已折旧 (2认同)

Art*_*rev 15

将此添加到 Eslint 规则

"rules": { "@typescript-eslint/no-unused-vars": [ 2, { "args": "none" } ] }