O TypeScript gerará um erro ("Uma expressão do tipo 'void' não pode ser testada para trueiness.ts(1345)") com código de depuração válido como:
const getFooPlusTwo = (foo) => console.log(foo) || foo + 2;
Existem vários hacks para contornar isso (adicionando +
, ,
, etc.), mas eles não funcionam em todas as circunstâncias ... e mais importante, são um trabalho desnecessário e sem nenhum benefício (JS funciona perfeitamente bem sem eles).
A maioria das regras TypeScript pode ser desativada. Existe alguma regra TypeScript (ou ESLint) que eu possa desabilitar para fazer com que o TypeScript não gere esses erros?
Você não poderá desabilitar esta regra de typescript,
console.log
ela retorna void e você não poderá usar uma expressão void em uma verificação de veracidade.Uma opção alternativa seria usar o operador vírgula para dividir o log e retornar o valor. O operador vírgula avalia cada um dos seus operandos (da esquerda para a direita) e retorna o valor do último operando.
Você pode aumentar o objeto do console global para fazer com que seus métodos retornem
undefined
em vez devoid
. É seguro, poisconsole.log
realmente retornaundefined
incondicionalmente. Apenas isto (você também pode adicionar outros métodos de console aqui):Link do Playground (leia isto para entender
declare global
, você provavelmente precisará disso, mas não no playground).Isso geralmente não permite o uso
void
em cadeias booleanas, e isso provavelmente é bom: se você aceitar um retorno de chamada retornandovoid
, poderá usá-lo acidentalmentecallback() || 'something'
e ficar desapontado quando esse retorno de chamada retornar1
."Uma expressão do tipo 'void' não pode ser testada quanto à veracidade" é o único erro que o texto digitado levanta para o trecho acima, portanto, desativá-lo pode realmente aceitar um código quebrado.