@typescript eslint/类型声明中没有未使用的变量为假阳性

@typescript eslint/没有未使用的变量存在一个问题。
所以,我们有类型

键入SomeType=(名称:string)=>无效的

并且我们在带有类型声明的字符串中有@typescript eslint/没有未使用的变量错误,表示“name”已定义,但从未使用过

类型用法示例:

导出常量LogSomeInfo:SomeType=(名称:字符串)=>{
常数a=名称;
控制台日志(a);
};

或:

接口CheckboxPropsType{
值:字符串,
onClick(值:字符串):void
}

而eslint在一次点击时就断了。。。字符串,表示值已定义但从未使用。
即使类型分配正确并且实际的onClick处理程序使用该值

问题:这个规则有什么问题,为什么会在这种情况下触发。为什么eslint将类型/接口中函数的类型声明识别为常规函数?我的eslint配置有问题吗

”;eslint“是:&引用^7.7.0
”@typescript-eslint/eslint插件":&引用^3.6.1“;,
&引用@typescript eslint/parser":&引用^4.0.1;,
&引用;eslint配置airbnb类型脚本“0”&引用^“9.0.0”

{
&“扩展”:[
&“airbnb typescript”;,
&“airbnb/hooks”;,
&“插件:反应/推荐”;,
&插件:@typescript eslint/recommended"
],
&“解析器”:“typescript eslint/parser”;,
&“解析选项”:{
&“ecmaFeatures”是:{
&“jsx”:正确
},
&ecmaVersion:2018,
&“源类型”:“模块”;,
&“项目”:“/tsconfig.json”;
},
&“设置”:{
&“反应”:{
&“版本”:“检测”;
}
},
&“插件”:[“typescript eslint”、“react hooks”、“react”],
&“环境”:{
&“浏览器”:真
},
&“规则”:{
&“对象卷曲换行符”:0,
&“导入/命名”:[“错误”],
&“缩进”:[“错误”,4],
&“react/jsx indent:[“error”,4],
&“逗号悬空”:[“错误”、“从不”],
&“导入/首选默认导出”:“关闭”;,
&“react/jsx片段”:“off”;,
&“箭头主体样式”:“关闭”;,
&“对象卷曲间距”:“关闭”;,
&“@typescript eslint/indent”:[“error”,4,{“SwitchCase”:1}],
&“@typescript eslint/explicit模块边界类型”:“关闭”;,
&“无未定义”:“错误”;,
&“react/jsx缩进道具”:[“error”,4],
&“最大长度”:[“错误”,{“代码”:120}],
&“反应/支撑类型”:“关闭”;
}
}

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

如果将@typescript eslint/parser@typescript eslint/eslint plugin的版本更新到v4.1.0,您将能够使用最新的更改,使@typescript eslint/no unused vars在所有情况下都能正常工作


作为旁白,使用插件的v3.x,但使用解析器的v4.x,将使您陷入一种非常奇怪的状态,行为未定义且不受支持

您应该确保始终使用两个包的相同版本,因为每个版本都是一起发布的

发表评论