which i thought means = if fromNow is true then 'LLL' else nothing
That's not what it means. x && y means:
- Evaluate
x
- If the value from Step 1 is falsy, take that value as the result of the
&& operation and stop
- If the value from Step 1 is truthy, evaluate
y and take that value as the result of the && operation
So if your fromNow is a boolean, fromNow && 'LLL' results in either false or 'LLL' — that is, a boolean or a string. But apparently your format variable is declared as type string, so TypeScript won't let you assign a boolean to it.
Your original, using the conditional operator,¹ is preferable if you want a string result either way. You could do fromNow && 'LLL' || '' but that's getting a bit convoluted, whereas the conditional operator version is simple and clear.
¹ The proper name of the ? : operator is the conditional operator. It's a ternary operator (an operator accepting three operands, just like a binary operator accepts two and a unary operator accepts one), and for now it's JavaScript's only ternary operator, but that could change. :-)