【问题标题】:Make "Unreachable code detected" compilation warning instead of error in TypeScript?在 TypeScript 中制作“检测到无法访问的代码”编译警告而不是错误?
【发布时间】:2017-11-08 12:24:52
【问题描述】:

在Typescript中,当存在无法访问的代码时,编译器默认会产生错误:

error TS7027: Unreachable code detected.

我可以通过使用编译器选项 allowUnreachableCodetrue 来避免它,但我可以以某种方式将其更改为警告吗?

我仍然希望了解无法访问的代码。在开发和调试过程中,我有时会使用if (false) 来临时删除一些功能,这比将代码注释掉要好,尤其是当代码本身包含 cmets 时。

在 C# 中,无法访问的代码会生成警告(我可以通过其他选项将其视为错误),在我看来这是更好的处理方式。

【问题讨论】:

  • 即使编译器发现错误,它仍然会发出 js 结果,除非您使用--noEmitOnError 标志。因此,您可以将错误视为警告
  • @NitzanTomer 好点。尽管有 webpack: Failed to compile. 消息,但似乎错误并没有阻止 webpack 构建包
  • 能否设置一个全局变量 alwaysFalse=false;并在 typescript 中声明 var(从而使 Typescript 编译器不知道它始终为 false),然后执行 if (alwaysFalse) 而不是 if (false)

标签: typescript


【解决方案1】:

在临时删除功能的特殊情况下(我认为这是人们希望拥有无法访问的代码的主要情况),编写

if( <any>false ) {
  // unused code goes here
}

将防止 TypeScript 编译器报错,并且给运行时 ECMAScript 实现一个很好的机会来优化代码。

或者,

if( 0 ) {
  // unused code goes here
}

将被 TypeScript 语言接受,但仍会触发来自tslint 的“意外常量条件”警告。

【讨论】:

  • 这是一个糟糕的答案。问题询问是否可以是警告,而不是是否可以完全避免错误。
  • @Jez:第二个提案将创建一个 linter 警告。
【解决方案2】:

截至撰写本文时的答案是“否”,不能作为警告;正如你所说,它要么是“错误”,要么是“没有”。 This Github issue 的存在允许将错误配置为警告,这将允许将其设置为警告。希望它会尽快实施。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    相关资源
    最近更新 更多