问题标签 [tslint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
38710 浏览

typescript - 为什么 TSLint 和 JSLint 报告空块?

有时,我会收到 TSLint 错误“块为空”。例如,当我将无操作回调传递给函数时,就会发生这种情况:

从我读到的内容来看,JSLint 显然也是这样做的,但我没有验证这一点。

我发现这些用法完全有效,所以我试图找到一个为什么空块被认为是坏的原因。但我唯一能找到的(例如在这个答案中)是添加 areturn;以避免错误的说明。这不是我想在每个空回调中做的。

为什么 TSLint 将空块上方报告为问题?有什么理由我不应该禁用检查吗?

0 投票
1 回答
356 浏览

typescript - 如何确定 TypeScript.Expression 对象的结果类型?

使用 TypeScript 抽象语法树时,如何确定 TypeScript.Expression 对象的结果类型?

我正在使用 TSLint 并试图找到不将 Function 类型的对象作为第一个参数传递的 setTimeout 调用。例如,在下面的代码中,我想知道调用了 setTimeout 并且第一个参数是一个函数。

AST 排列如下:

  • setTimeout -> TypeScript.CallExpression
  • createFunction() -> TypeScript.Expression

我曾尝试使用 LanguageService 来确定表达式的类型,但以下 API 都没有满足我的需求:

  • languageServices.getQuickInfoAtPosition
  • languageServices.getDefinitionAtPosition
  • languageServices.getTypeDefinitionAtPosition

有任何想法吗?

0 投票
0 回答
317 浏览

typescript - 如何确定作为函数参数的 TypeScript.Expression 的编译时类型?

使用 TypeScript 抽象语法树时,如何确定作为函数参数提供的 TypeScript.Expression 的编译时类型?

在下面的代码中,我想知道传递给 setTimeout 的参数的类型。

AST 排列如下:

我尝试了几种方法来获取此信息,但 TypeChecker 一直将类型报告为“任何”。

一个节点有一个父节点……我可以爬上 AST 分析父节点,直到找到正确的定义。但这是个坏主意。必须有更简单的方法。

有任何想法吗?

0 投票
2 回答
1022 浏览

typescript - 文件第一行中的“use strict”会影响文件中的所有功能吗?

所以我从这里改编了这段代码用于学习目的:

我正在使用这些tslint.json规则在此文件上运行tslint 。

这就是我得到的:

app.ts[10, 1]:缺少“使用严格”

app.ts[17, 1]:缺少“使用严格”

app.ts[33, 1]:缺少“使用严格”

app.ts[43, 1]:缺少“使用严格”

我的理解是,"use string"; 文件的第一行应该是整个文件的全局。然而,每个函数都会产生一条消息。我错过了什么吗?

0 投票
1 回答
3700 浏览

typescript - TSLint:未使用的 var 关键字

我已经为我的 TypeScript 项目配置了 TSLint,但我不知道警告是什么forbidden var keyword意思。这是一个最小的示例,它会导致 TSLint 警告:

谢谢你。

编辑:我正在使用示例 tslint.json

0 投票
3 回答
4073 浏览

javascript - VSCode TypeScript lint

开发 TypeScript 的人使用 Visual Studio Code?我也在尝试使用它。但我没有验证(ts-lint)警告或错误。我刚刚在构建时收到这样的消息:

例子:

1 == 2

JS 文件中的这样的表达式会告诉我使用1 === 2. 但是 TS 文件中的这个表达式会起作用,甚至不会显示任何警告。

在打字时,我能做些什么来在 TypeScript 中启用这种验证?

0 投票
0 回答
333 浏览

gulp - Gulp TsLint & Mocha 报告文件

我可以使用 TSLint 检查我的 TypeScript 文件的语法错误,但我无法生成带有错误的报告文件,而且我对 mocha 也有同样的问题:我运行测试但我无法生成文件报告。

我正在使用 gulp 任务。

0 投票
2 回答
1267 浏览

methods - TypeScript 方法类型签名冗余

也许我严重遗漏了一些东西,但我无法摆脱我所有课程的语法问题。

这是一个例子:

由于我使用 tslint 强制执行类型声明,所以我的所有方法都是这样编写的。这太糟糕了。必须复制粘贴参数部分,重命名类型声明和 lambda 声明之间的参数名称非常痛苦。

那么:有没有更好的方法来结合类型签名和 lambda 声明而不需要所有的膝跳?我真诚地希望我错过了一些东西,希望这不是“设计”!:)

0 投票
0 回答
166 浏览

gulp - Gulp watch 任务运行一次,然后在第二次运行时挂起

我有一些 gulp 任务来运行我的 TSLint 检查项目。我的任务是只查看新更改的文件并在它们更改时运行检查(在文件保存时)。目前,当我运行watchTS任务时,它将在我保存/更改的第一个文件时运行并正常工作。在下一次文件更改时,它将运行任务但实际上并未完成或执行任何 TSLint 验证。

吞咽输出

它运行一次,发现错误。我做了一些事情让它再次运行,它永远不会完成任务或运行 TSLint。

以下是相关的 gulp 任务

0 投票
3 回答
9301 浏览

visual-studio-2015 - 在 Visual Studio 2015 中设置 TSLint

我在 Visual Studio 2013 中使用 Typescript 进行开发,并且总是在底部打开我的错误列表。TSLint 在我编写代码时告诉我代码混乱/不正确。除了安装 Web Essentials 插件,我认为我不需要做任何事情。

我最近安装了 Visual Studio 2015,但终生无法让 TSLint 像在 Visual Studio 2013 中那样工作。我是否遗漏了一些明显的东西?