Typescript 为什么ESLint抛出';无未使用的VAR';对于类型脚本接口?
因此,我在.ts文件中有一段代码: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
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"
}
...
}