TypeScript 将抛出一个错误(“无法测试类型为‘void’的表达式的真实性。ts(1345)”),有效的调试代码如下:
const getFooPlusTwo = (foo) => console.log(foo) || foo + 2;
有多种方法可以解决这个问题(添加+
、,
等),但它们并不在所有情况下都有效......更重要的是,它们是不必要的工作,没有任何好处(没有它们,JS 也能很好地工作)。
大多数 TypeScript 规则都可以关闭。是否有任何 TypeScript(或 ESLint)规则可以禁用以使 TypeScript 不会抛出这些错误?
您将无法禁用此 typescript 规则,
console.log
返回 void,并且您不能在真实性检查中使用 void 表达式。另一种选择是使用逗号运算符来拆分日志并返回值。逗号运算符评估其每个操作数(从左到右)并返回最后一个操作数的值。
您可以扩充全局控制台对象,使其方法返回
undefined
而不是void
。这是安全的,因为console.log
真正无条件返回undefined
。就是这样(您也可以在此处添加其他控制台方法):游乐场链接(阅读此内容以了解
declare global
,您可能需要它,但不是在游乐场)。这通常不允许
void
在这样的布尔链中使用,这可能是件好事:如果你接受一个返回的回调void
,你可能会意外地使用它,callback() || 'something'
而当该回调返回时你会感到失望1
。“无法测试类型为‘void’的表达式的真实性”是上述代码片段中 TypeScript 引发的唯一错误,因此禁用它可能确实会接受损坏的代码。