Yea uh is this actually equivalent? In all of those other cases you’re checking if a is null and in the last case my understanding is it is checking to see if a is falsely. In the case that a is 0, or undefined, or an empty array or any other kind of non null falsey value, then the behavior would be different.
In C# that last one is the null propagation operator. If a is not null then a, else b.
Ah interesting one of those cases where this could be one of a few languages. I was reading it as JS.
I thought it was TS/JS too, but the way those braces are below the if statements makes it feel more like C#.
Even in Javascript, the ?? operator checks explicitly for null or undefined. So it added undefined, but not 0 or false. But adding undefined sounds like a good addition for this operator.
See the Javascript section of: https://wikipedia.org/wiki/Null_coalescing_operator#Examples_by_languages