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 已经警告你 letconst 违规。它没有用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.jsontslint.json

所有 TSLint CLI 选项都是 documented here。不再需要使用--type-check,因为它在TSLint v5.8.0 中已被弃用。

【讨论】:

以上是关于tslint 的含义是啥:“警告:'no-use-before-declare' 规则需要类型信息”?的主要内容,如果未能解决你的问题,请参考以下文章

tslint 指出的“as 语法”是啥?

函数中A的含义是啥,W的含义是啥,x的含义是啥,是弧度还是邻边比斜边,b的含义是啥。

GREP缩写是啥含义?它的五大功能是啥?

花括号的含义是啥? [关闭]

NSURLErrorDomain 中代码的含义是啥?

perf 脚本输出的含义是啥?