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();
});
}
}
我在上面提到的行上遇到了上述错误。问题是代码问题。我正在尝试从数组中对日期进行排序。
答案 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)
之类的内容,那么当您的元素else
为myVariable
时,您会到达null
块,否则会执行if
块。