【问题标题】:typescript - tslint misplaced 'else' (one-line)打字稿 - tslint 错位“其他”(单行)
【发布时间】:2017-08-08 14:38:10
【问题描述】:

我正在为 VS Code 使用 TSLint 扩展。我收到了一堆[tslint] misplaced 'else' (one-line) 警告。例如,在下面的代码示例中,linter 在 else 字下划线并给出相同的警告:

代码:

if (user.isAdmin) {
    this.uiRouter.stateService.go('app.admin');
}
else {
    this.sharedVariables.user = user;
    this.navigateByUserType(user);
}

这段代码有什么问题?

【问题讨论】:

  • 错误消息准确地说明了问题所在。这有什么好难理解的?
  • 谷歌“[tslint] 错位'else'(单行)”。一个答案是from the doc page,它在第一行中说要求指定的标记与它们前面的表达式在同一行。第一个结果是this SO question,它也给出了明确的答案.
  • 兄弟@torazaburo 这并不总是那么容易。在线也意味着所有基于条件的代码都在一行中。
  • 我做到了,这是最热门的。
  • 答案是没有问题,这是非常好的格式。然而,为了让 lint 停止抱怨,请在 else 的左侧和右侧使用花括号。

标签: javascript visual-studio-code tslint


【解决方案1】:

来自tslint one-line rule documentation

规则:一行

要求指定的标记与 前面的表达式。

您启用了一个名为 one-line 的 tslint 规则,并指定了一个名为 check-else 的令牌。这告诉 tslint 对与前一个结尾大括号不在同一行的每个 else 语句发出警告。如果将 else 语句向上移动到与 if 语句的结尾大括号相同的行,则应该满足 tslint 规则。

if (user.isAdmin) {
    this.uiRouter.stateService.go('app.admin');
} else {
    this.sharedVariables.user = user;
    this.navigateByUserType(user);
}

【讨论】:

    【解决方案2】:

    始终确保 if 大括号和 else 语句位于同一行。

    这是根据 TSLint 单行规则文档。

    【讨论】:

    • 这个答案比公认的更好吗?没有参考和解释,基本相同。
    • 有时人们只想要一个直截了当的答案。并且基本上是利用我的经验来解决这个问题。在提供我的回复之前,我应该先阅读其他回复。
    猜你喜欢
    • 2021-05-20
    • 2016-05-17
    • 2021-09-21
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多