使用tslint.json
配置:
{
"rulesDirectory": [
"node_modules/codelyzer"
],
"rules": {
"arrow-return-shorthand": true,
"callable-types": true,
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": true,
"eofline": true,
"forin": true,
"import-blacklist": [
true,
"rxjs"
],
"import-spacing": true,
"indent": [
true,
"spaces"
],
"interface-over-type-literal": true,
"label-position": true,
"max-line-length": [
true,
140
],
"member-access": false,
"member-ordering": [
true,
{
"order": [
"public-static-field",
"protected-static-field",
"public-static-method",
"protected-static-method"
]
}
],
"no-arg": true,
"no-bitwise": true,
"no-console": [
true,
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-debugger": true,
"no-duplicate-super": true,
"no-empty": false,
"no-empty-interface": true,
"no-eval": true,
"no-inferrable-types": [
true,
"ignore-params"
],
"no-unused-variable": true,
"no-misused-new": true,
"no-non-null-assertion": true,
"no-shadowed-variable": true,
"no-string-literal": false,
"no-string-throw": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": true,
"no-unnecessary-initializer": true,
"no-unused-expression": true,
"no-var-keyword": true,
"object-literal-sort-keys": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"prefer-const": true,
"quotemark": [
true,
"single"
],
"radix": true,
"semicolon": [
"always"
],
"triple-equals": [
true,
"allow-null-check"
],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"typeof-compare": true,
"unified-signatures": true,
"variable-name": false,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
],
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
"component-selector": [
true,
"element",
"app",
"kebab-case"
],
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-host-property-decorator": true,
"no-input-rename": true,
"no-output-rename": true,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true,
"no-access-missing-member": true,
"templates-use-public": true,
"invoke-injectable": true
}
}
我到底做错了什么?
使用以下参数运行tslint
时:
tslint --type-check --project tsconfig.json src/**/*.ts
我收到以下警告:
Could not find implementations for the following rules specified in the configuration:
Warning: The 'no-unused-variable' rule requires type checking
Try upgrading TSLint and/or ensuring that you have all necessary custom rules installed.
If TSLint was recently upgraded, you may have old rules configured which need to be cleaned up.
根据tslint
文档进行类型检查,我需要做的就是传入--type-check --project tsconfig.json
但它似乎不起作用。
请填写问题模板。 你的 tslint.json 是什么样的?
我在家并尝试了相同的项目并且它工作正常。 我将保持开放状态,直到我周一上班再次测试。 可能只需要重新安装我的节点模块。
我也更新为使用问题模板。
在 tslint 更新后的某个时间(可能是 v4 -> v5),如果没有--type-check
、 --project
参数, no-unused-variable
将不可用。
此选项难以使用,更新后需要很长时间才能打印结果,但重要且最常用的 linting 选项。 有没有办法在没有上层参数的情况下使用这个选项?
在 tslint 更新后的某个时候(可能是 v4 -> v5),如果没有 --type-check 和 --project 参数,no-unused-variable 将不可用。
我正在传递 --project 与tslint --type-check --project tsconfig.json src/**/*.ts
在我的家用电脑上我没有这个问题,但在我的工作电脑上我有。
@everedifice规则实现存在错误,我们几乎弃用了它(https://github.com/palantir/tslint/issues/1481),最终决定通过委托编译器的 no-unused-variable 实现来保留它(这解决了大多数错误)。 在这个 repo 中有很多关于它的讨论主题,我鼓励你查看,大部分链接来自做出重大更改的 PR ( https://github.com/palantir/tslint/pull/2235.
@mastrauckas如果没有关于两个不同环境之间差异的更多详细信息,我真的无法帮助您。
@adidahiya我昨晚也在第三台电脑上得到了这个,这台电脑也是 macOS。 我打算在家里的电脑上再试一次,看看它是否仍然发生。
一般来说:
计算机 1: Windows 10 完全是最新的,截至目前我没有收到error
。
计算机 2: macOS 完全更新,我得到了error
。
计算机 3: Windows 7 完全更新,我得到error
。
@everedifice我刚刚发布了一个新版本的tslint-consistent-codestyle
和一个新规则no-unused
,它主要类似于no-unused-variable
具有一些附加功能,但不需要使用--project --type-check
.
如果您有兴趣,可以在此处找到文档: https :
我认为没有问题的计算机毕竟似乎有问题。 这是一个错误吗?
关于这个问题有什么新的吗?
我有同样的问题。
相同的问题,但都有“警告:‘无未使用的变量’规则需要类型信息。”
和“警告:'no-use-before-declare' 规则需要类型信息。” (我可以看到“信息”中的拼写错误在 5.5.0 和 5.7.0 版本之间得到了修复,但这是唯一改变的地方)。 我正在使用打字稿版本 2.4.1 运行它。 有关于这个问题的消息吗?
同样的问题在这里
此问题是否已解决或是否有任何临时修复停止显示警告。
我不认为它是固定的。 我什至不认为他们接受了一个问题。
永久修复,在 tsconfig.json 中使用no-unused-variable
而不是 tslint.json。 如果编译器可以提供相同的功能,那么使用 linter 就没有任何意义。
@AnimaMundi确实提供了相同的功能,但是当将 tslint 作为我们 CI 过程的一部分运行时,这些需要在测试期间标记,而不是在构建期间标记。 我不同意这应该被忽略/删除,因为编译器在构建时这样做。
@haswalt我看不出有任何理由需要在 linting 阶段而不是构建阶段对其进行标记。 不管你同意与否,我与这个项目的开发无关。 我刚刚看到有人正在寻找修复程序并为他们提供了它。
与@AnimaMundi的修复类似,我在noUnusedLocals
和noUnusedParameters
。 错误显示在我的“问题”窗格中。
@AnimaMundi @haswalt @keego在其他 TSLint 线程(https://github.com/palantir/tslint/issues/1481 和链接线程)中广泛讨论了 lint 规则与编译器检查未使用变量的优点; 这个问题并不是真正适合它的地方。
@adidahiya我的评论只是为了分享这个问题的修复,而不是对 linter 规则与编译器检查的优点进行评论。
服从编译器不会做同样的事情:编译器只有一个选项:失败。
tslint
处理它的原因是它通常需要是一个警告(绿色波浪线与红色波浪线)。
tslint 问题不仅可以显示为警告,而且还可以一次性忽略,而 typescript 编译错误则不能
这些点都已经全部解决了(请参阅我的最后一条评论和链接的线程)。 现在没有什么能阻止您使用no-unused-variable
作为 TSLint 规则。 我不确定这些后续评论试图达到什么目的。
@mastrauckas你对这条规则还有问题吗? --type-check
标志已被弃用,但需要--project
才能启用基于类型检查的规则。
旁白:使用TS 2.6 ,您可以使用// @ts-ignore
来抑制编译器错误。
@adidahiya我只是在回应上面的评论,声称没有理由将其作为 lint 规则而不是编译器规则。
但你是对的,我猜相关问题是 vscode 扩展而不是 tslint 本身。 tbh 在这个话题上有很多问题,我花了一段时间才弄清楚为什么它不起作用以及在哪里。
欣赏小费。 一旦我们切换到 2.6,我将立即切换回使用编译器设置
对于那些声称这不应该是 lint 规则的人来说,还有一点:lint 警告可以修复,这是一个主要的候选者。
我在最新的 1.19 VS Code The 'no-unused-variable' rule requires type information
收到了同样的警告(见下文)。 我的配置缺少什么吗?
{
"extends": "tslint:recommended",
"rules": {
"linebreak-style": [true, "LF"],
"quotemark": [true, "single", "avoid-escape", "avoid-template"],
"no-console": false,
"no-unused-expression": false,
"ordered-imports": false,
"member-access": [true, "no-public"],
"object-literal-sort-keys": false,
"curly": [true, "ignore-same-line"],
"semicolon": [true, "never"],
"no-var-requires": false,
"no-unused-variable": true
}
}
如果您查看 VSCode 1.19 自述文件,则有一项新功能可以将此规则和其他规则视为警告。
对我们来说,这意味着:
tslint.json
删除"no-unused-variable"
tslint.json
"noUnusedLocals"
到我们的tsconfig.json
其他规则留给读者练习;-)
请注意,tslint 是此扩展,而 tsconfig 是 VSCode 内置行为。
我选择删除no-unused-variable
因为 VS 1.19 似乎已经报告了这些。
我不明白 VSCode 与此有什么关系。 仅让 VSCode 将这些视为警告是不够的,我需要我的 webpack dev server watch build 不会因为它们而失败。 是否有no-unused-variable
的替代品,独立于特定的编辑器,将
?
@pelotom ,有几个人从 VSCode TSLint 扩展重定向到这里,例如从https://github.com/Microsoft/vscode-tslint/issues/219
到目前为止,TS 无法将一些问题显示为警告(绿色波浪线),但 lints(ESlint、TSLint)能够。 所以我们在问为什么 TSlint 不会将未使用的变量报告为警告。 但是从 1.19 开始,VSCode 的 TS 可以发出这些警告,我们正在退出这个问题😉
需要明确的是,我也使用 VSCode,也希望在编辑器中看到这些警告突出显示,但 VSCode 的设置似乎是错误的层,_configuring_ 编译器错误的严重性,因为它不会影响您的其余部分工具链。
我同意你的汤姆,并希望在编辑器和我们的构建/CI 程序都得到适当支持的地方找到解决方案。 到目前为止,我们已经看到了强烈的抵制(似乎是合理的),有些人(包括我)会采取我们今天所能做的,同时对真正的解决方案抱有希望。
如果您查看 VSCode 1.19 自述文件,则有一项新功能可以将此规则和其他规则视为警告。
@rnemec我认为您打算编写“发行说明”而不是“自述文件”。 我笨到去寻找自述文件。 对于到达这里的任何人,我们不妨引用相关内容:
VS Code 现在将 TypeScript 代码样式问题显示为警告而不是错误。 这适用于:
变量已声明但从未使用
属性已声明但从未读取其值
检测到无法访问的代码
未使用的标签
掉入开关中的外壳
并非所有代码路径都返回值
将这些视为警告与其他工具(例如 TSLint)一致。 当您从命令行运行 tsc 时,这些仍将显示为错误。您可以通过设置禁用此行为:“typescript.reportStyleChecksAsWarnings”:false。
所以这是一个临时解决方案,仅在使用 VSCode 时有效。 如果警告留在那里,任何其他直接使用tsc
构建工具都不会编译代码。 我有一些同事正在使用 Atom,因此如果我进行了更改并忽略了其中一个警告,他们将无法编译代码。 对?
我不太明白这是如何解决任何问题的。 如果编译器仍然将它们视为错误,那么将这些内容显示为警告有什么用?
如果我理解正确,长期解决方案是在tsc
添加一个标志来强制执行相同的行为(使其编译时带有警告),或者完全删除这些编译器检查?
- - 编辑 - -
我没有通读之前的所有评论。 @pelotom已经提出了同样的观点。
如果您希望 lint 检查在开发模式与 CI 模式下具有不同的严重性,您可以使用多个 tslint.json 配置来执行此操作,其中一个extends
另一个。 #2569 需要修复以使此处的 UX 良好,以便您可以仅使用一个defaultSeverity
配置行来切换严重性——它正在进行中。
@adidahiya正在讨论的是no-unused-variable
lint 规则的所谓 _replacement_,使用tsc
的noUnusedLocals
。
@pelotom是的,我明白了——但我认为tsc
还不支持这样的工作流程。 您可以有两个tsconfig.json
文件,其中一个扩展另一个文件并分别禁用每个“非致命”编译器检查(在本例中noUnusedLocals
、 noUnusedParameters
),但这不会不要让您在编辑器中将检查视为警告。
@adidahiya是的,这就是为什么它目前不是有效的替代品。 而且我更愿意看到no-unused-variable
在 VSCode 中正常工作,而不是投入更多精力让noUnusedLocals
表现得更像 lint 规则。 IMO 编译器首先尝试获取此类检查的所有权是错误的。
而且我更愿意看到 no-unused-variable 在 VSCode 中正常工作,而不是投入更多精力让 noUnusedLocals 表现得更像 lint 规则。
说得通。 我相信这个项目旨在做到这一点: https :
我说得太快了。 我们在https://github.com/palantir/tslint/issues/2649 上被阻止,因为该插件很有用。 改为跟踪该问题。
@adidahiya是的,我已经跟踪它很长一段时间了。
有这方面的消息吗? 它会被弃用吗?
@philip-firstorder 使用这个为我解决了这个问题--project tsconfig.json
tslint -c tslint.json --project tsconfig.json src/**/*.ts
现在不推荐使用 no-unused-variable,请参阅 #3918 和 #3919
🤖 哔哔! 👉 TSLint 已弃用👈,您应该切换到typescript-eslint ! 🤖
🔒 此问题已被锁定,以防止进一步不必要的讨论。 谢谢! 👋
最有用的评论
如果您查看 VSCode 1.19 自述文件,则有一项新功能可以将此规则和其他规则视为警告。
对我们来说,这意味着:
tslint.json
删除"no-unused-variable"
tslint.json
"noUnusedLocals"
到我们的tsconfig.json
其他规则留给读者练习;-)
请注意,tslint 是此扩展,而 tsconfig 是 VSCode 内置行为。