【问题标题】:tslint does not detect undeclared variable in *.js filestslint 未检测到 *.js 文件中未声明的变量
【发布时间】:2018-01-09 22:33:49
【问题描述】:

在视觉代码下 并使用 tslint 检查 *.ts 和 *.js 文件, .js 文件中未检测到未声明的变量 因为它们在 .ts 文件中。

有什么想法吗?

如您所见,在两个文件中都可以很好地检测到 no-console:.js 和 .ts iterableGGG 没有在 ts 文件中声明 =>,它带有红色下划线。但是js文件中没有。

注意:从 lodash 导入只是为了有一个模块,所以 ts 文件中的变量不是全局的。

tslint.json

{
    "defaultSeverity": "error",
    "extends": [
        "tslint:recommended"
    ],
    "jsRules": {},
    "rules": {
        "no-any": false
    },
    "rulesDirectory": []
}

【问题讨论】:

    标签: javascript visual-studio typescript tslint


    【解决方案1】:

    我找到了解决办法。

    在 TS 文件中,未声明的变量 iterableGGG 被 tsc NOT tslint 检测到,您可以观察到,因为在 VC 中,警告/错误弹出消息以 [ts] 而不是 [tslint] 开头。并且当 tslint 检测到某事时,有一个规则名称(例如:“no-use-before-declare”) 您还可以在 CLI 中看到,直接执行命令 tsc 和 tslint。您可以检查 tsc 是否引发了此类错误。

    >tsc
    src/examplJS.js(3,19): error TS2552: Cannot find name 'iterableGGG'. Did you mean 'iterable' ?
    src/examplTS.js(5,19): error TS2304: Cannot find name 'iterableGGG'.
    

    所以转到 tsc config tsconfig.json,只需将“checkJs”激活为 true,VC 也会显示 JS 代码和 TS 的错误

    "allowJs": true, /* 允许编译 javascript 文件。 */

    "checkJs": true, /* 报告 .js 文件中的错误。 */

    【讨论】:

      【解决方案2】:

      如果我没记错的话,我认为 jsRules 应该如下所示。

      "jsRules": {
          "no-use-before-declare": true
      }
      

      【讨论】:

      • 我试过了,但这在 JS 中不起作用。现在隐含了许多规则,但奇怪的是它在 TS 中没有添加规则而在 JS 中没有添加规则
      猜你喜欢
      • 1970-01-01
      • 2021-07-20
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多