tslint 的含义是啥:“警告:'no-use-before-declare' 规则需要类型信息”?
Posted
技术标签:
【中文标题】tslint 的含义是啥:“警告:\'no-use-before-declare\' 规则需要类型信息”?【英文标题】:what is the meaning of tslint: "Warning: The 'no-use-before-declare' rule requires type information"?tslint 的含义是什么:“警告:'no-use-before-declare' 规则需要类型信息”? 【发布时间】:2018-03-24 18:13:27 【问题描述】:tslint 是什么意思:“警告:'no-use-before-declare' 规则需要类型信息。”?我做了一些基本的谷歌搜索,但我不清楚这意味着什么或它的含义。
【问题讨论】:
【参考方案1】:更新!由于提出了这个问题,--type-check
标志已被弃用,因此您应该可以使用:
tslint --project tsconfig.json src/**/**.ts
原始答案如下。
我相信这意味着您无法启用no-use-before-declare
规则,除非您使用--type-check
和--project
标志运行。它必须取决于传递这些标志时发生的事情,以确定是否违反规则。
tslint --type-check --project tslint.json src/**/**.ts
【讨论】:
看起来该规则主要是使用 var 关键字时的验证检查:palantir.github.io/tslint/rules/no-use-before-declare 如果启用了 var-keyword-forbidden 规则,那么似乎可以禁用该规则吧? 准确地说 - TypeScript 已经警告你let
和 const
违规。它没有用var
警告你的唯一原因是因为用var
声明的变量被提升了,所以它们在使用之前技术上声明了。
注意:--type-check
已弃用。您只需要--project
即可启用需要类型信息的规则(TSLint v5.10.0)。
应该是tslint --project tsconfig.json …
而不是tslint.json
。【参考方案2】:
如果您在 VSCode 中看到此警告,只需从 tslint.json
中删除此规则,正如 vscode-tslint
插件中的 README 文件所说:
从 tslint 版本 5 开始,规则 no-unused-variable 需要类型信息。 vscode-tslint 目前不支持带有类型信息的规则,请参阅问题 #70。建议的解决方法是在 tsconfig.json 文件中启用 TypeScript 编译器选项 noUnusedLocals 和 noUnusedParameters。
【讨论】:
【参考方案3】:不鼓励使用该规则,因为现代 TypeScript 不使用它并且计算速度很慢。根据this page:
此规则主要在使用 var 关键字时很有用,因为编译器会在声明之前自动检测是否使用了块范围的 let 和 const 变量。由于大多数现代 TypeScript 不使用 var,因此通常不鼓励使用此规则,并将其保留用于遗留目的。它的计算速度很慢,未在内置配置预设中启用,不应用于通知 TSLint 设计决策。
【讨论】:
【参考方案4】:使用 TSLint v5.10.0 及更高版本,您需要将 TSLint 指向您的 TypeScript configuration 文件。您可以使用--project
标志来做到这一点:
tslint --project tsconfig.json --config tslint.json \"src/**/*.ts\"
小心,因为某些用户already experienced 很容易混淆tsconfig.json
和tslint.json
。
所有 TSLint CLI 选项都是 documented here。不再需要使用--type-check
,因为它在TSLint v5.8.0 中已被弃用。
【讨论】:
以上是关于tslint 的含义是啥:“警告:'no-use-before-declare' 规则需要类型信息”?的主要内容,如果未能解决你的问题,请参考以下文章