// @strict: true declare const a: string | undefined declare const b: string | undefined declare const c: string | undefined // should be a syntax error a ?? b || c; // should be a syntax error a || b ?? c; // should be a syntax error a ?? b && c; // should be a syntax error a && b ?? c; // Valid according to spec a ?? (b || c); // Valid according to spec (a ?? b) || c; // Valid according to spec (a || b) ?? c; // Valid according to spec a || (b ?? c); // Valid according to spec a ?? (b && c); // Valid according to spec (a ?? b) && c; // Valid according to spec (a && b) ?? c; // Valid according to spec a && (b ?? c);