Typescript 为什么ESLint抛出';无未使用的VAR';对于类型脚本接口?

Typescript 为什么ESLint抛出';无未使用的VAR';对于类型脚本接口?,typescript,eslint,Typescript,Eslint,因此,我在.ts文件中有一段代码: import {MicroEventInterface} from '../Interfaces'; export default class MicroEvent implements MicroEventInterface { // code 而ESLint抛出以下错误: 我在ESLint中有这个TypeScript配置: typescript: { extends: [ 'plugin:@private/private/r

因此,我在.ts文件中有一段代码:

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

export default class MicroEvent implements MicroEventInterface {

// code
而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'
        }
    }
}
所以,一切看起来都很好,但我无法克服这个错误

有什么建议吗

谢谢

UPD:


看起来像是I
console.log(
--
,microventerface)错误消失。我认为,ESLint不会将
实现
视为实际使用。

我认为解决此问题的正确方法是声明您的接口

declare interface Foo {}
与其他类型(例如Foo.d.ts)一起保存在单独的文件中

然后正确地配置typescript编译器以获取所有声明

见:

节:@类型、类型根和类型


之后,您将能够使用所有类型声明和接口,而无需显式导入。

为了在纯TypeScript项目中解决此问题,我在我的eslint配置文件(
.eslintrc.json
)中添加了以下规则。要使这个特定的解决方案起作用,您必须遵循接口名称以大写“I”开头的约定

顺便说一句,在考虑是否在文件/模块中使用其他工件(即类)时,它们的第一个字母是大写字母“I”,将被忽略

埃斯林特
有关此规则的详细信息,请参阅。

使用
@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"
  }
  ...
}


将此添加到Eslint规则

“规则”:{

“@typescript eslint/无未使用的变量”:[ 2. { “args”:“无” } ] }

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

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

因此,解决这一问题的步骤如下:

  • 将您的版本至少更新到
    @typescript-eslint/parser
    @typescript-eslint/eslint插件的v4.9.1
  • 将您的ESLint版本至少更新到v6.0.0

  • 更新配置以使用
    @typescript eslint/无未使用的变量
    • 请勿使用基本
      no unused vars
      规则-

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

ESLint通常在导入的模块未在定义范围内使用时引发此类错误。基本上,它想说,“当你不需要的时候,为什么还要进口一些东西”@VikasMishra yep,我理解。但我实际上是在用“implements”命令来实现它。实现某些东西并不意味着你正在使用它。如果需要,Implement只要求它符合(可能使用)特定的模块。@VikasMishra那么,我该如何解决这个问题呢?我应该将接口与组件放在同一个文件中吗?从2019年起,BP?@Paleol使用TSLint而不是ESLint是无效的选项,因为TSLint项目正在被弃用,转而使用带有TypeScript:的ESLint和其他信息。2也可以替换为“错误”,如果ESLint版本为^6.6.0怎么办?这就是我们使用create react app创建项目时所期望的。@BradZacher-您能否详细说明
更新配置以使用@typescript eslint/无未使用的变量
位?应该是这样吗<代码>“规则”:{“导入/首先”:“关闭”,“没有未使用的变量”:“关闭”,“没有未使用的变量”:[“错误”]}
请尝试文档以了解更多信息:在
@typescript eslint/parser+plugin
v4.14和
eslint
v7.18中,对于已实现的接口仍然会发生这种情况。@JoepBeusenberg这里也一样。您找到解决问题的方法了吗?@typescript eslint/no unused vars experiative现在已贬值
// .eslintrc
{
  ...
  "rules": {
    "@typescript-eslint/no-unused-vars": "off",
    "@typescript-eslint/no-unused-vars-experimental": "error"
  }
  ...
}