@typescript-eslint strict-boolean-expressions kontrollera efter falskt värde


Jag hade nyligen ett problem med en ternär som kontrollerade en number | undefined-variabel för undefined, men på grund av min brist på uppmärksamhet när jag skrev koden, när siffran var 0, anklagade den felaktigt värdet för att vara undefined.

Sedan upptäckte jag den strikta boolean-uttrycksregeln i ESLint.

Ser mycket användbart och säkert ut, men, med tanke på detta exempel:

const text: string | undefined = stringOrUndefined1 || stringOrUndefined2 || undefined; // the strings can be empty
if (!text) // I was doing it this way to check if the value was falsy. With the new rule, it complains.
  return;
if (text === undefined || text === '') // This works, but is 4x the length of the one above. I don't want to write the var name more than once
if (!!text == false) // "Unexpected nullable string value in conditional. Please handle the nullish/empty cases explicitly."
if (!!!text) // Same warn as above

Finns det något sätt att snabbt och snyggt kontrollera om värdet är falskt utan den långa andra villkorssatsen, och utan att inaktivera regeln, även bara för den specifika raden?

Jag vet att det är möjligt att inaktivera endast för nullable-strängar, men denna fråga gäller också för siffror, regeln som jag vill behålla av säkerhetsskäl.

Svar #1

Du kan prova att använda nullish coalescing-operatorn (??) så här:

if (!(text ?? '')) {}

text ?? '' utvärderas till '' om det är undefined och text annars.

Detta motsvarar följande:

if (!(text !== null && text !== undefined ? text : '')) {}

Relaterade artiklar