错误TS7027:无法访问的代码检测到的typescript

时间:2018-04-24 08:05:42

标签: angular typescript

  sortArrayDate(arrayToSort, arrayDateKey, ascendingOrDecending) {
    if (true) {
      arrayToSort.sort(function(a, b){
        if (a[arrayDateKey] === '' || a[arrayDateKey] === null) {
          return 1;
        }
        if (b[arrayDateKey] === '' || b[arrayDateKey] === null) {
          return -1;
        }
        return new Date(a[arrayDateKey]).getTime() - new Date(b[arrayDateKey]).getTime();
   });
    } else {
        arrayToSort.sort(function(a, b){  //getting error
        if (a[arrayDateKey] === '' || a[arrayDateKey] === null) {
          return 1;
        }
        if (b[arrayDateKey] === '' || b[arrayDateKey] === null) {
           return -1;
        }
        return new Date(b[arrayDateKey]).getTime() - new Date(a[arrayDateKey]).getTime();
      });
    }
  }

我在上面提到的行上遇到了上述错误。问题是代码问题。我正在尝试从数组中对日期进行排序。

5 个答案:

答案 0 :(得分:3)

如果第二行函数的条件为:

if(true)

然后你还有其他的一部分。因为第一个if将永远为真,否则永远不会达到/被调用。这就是打字稿给出无法访问的代码错误的原因。

如果您希望内部代码始终执行,则可以使其超出if/else条件。

为了在不更改代码的情况下禁用此错误(不推荐),您可以使用tsconfig.json更改编译器配置。添加此项以取消此警告:

"allowUnreachableCode": true

答案 1 :(得分:0)

你的if(true)说如果情况你总是这样做。因此,无法联系到else部分,因为您的if始终为true

答案 2 :(得分:0)

编译器是正确的,因为您使用if(true) else分支上的任何语句都无法访问。您可以使用"allowUnreachableCode": true

禁用此功能(虽然我不会重新考虑)

答案 3 :(得分:0)

打字稿编译器提供无法访问的代码错误,因为无法访问/调用else部分。我不建议在编译器配置(tsconfig.json)中更改任何内容,而是建议使用始终导致布尔值true的条件来欺骗编译器。

例如,将if(true)替换为if(Math.random())

Math.random()的返回类型为number,使编译器认为它可以导致任何数字,包括可能导致布尔zero的{​​{1}},但实际上false永远不会给Math.random()并且总是一个正数,每次都会产生一个布尔zero

以下是完整的代码:

true

答案 4 :(得分:0)

else部分仅在if条件评估为false时才有效。因此,如果您有if(myVariable != null)之类的内容,那么当您的元素elsemyVariable时,您会到达null块,否则会执行if块。