Files
scriptc/tests/corpus/2821-array-optional-numeric-comparisons.ts
Chris Tate 94fd361b54 Implement sparse native arrays and missing-value parity (#297)
Represent ordinary JavaScript arrays with hole, value, and explicit-undefined states; add sparse side storage and carry missing values through the frontend, native backends, runtime, and Node-facing consumers.
2026-09-12 22:39:07 -05:00

23 lines
831 B
TypeScript

// Numeric consumers use JavaScript's ToNumber(undefined) = NaN while
// strict equality keeps the original undefined union arm. A wider array
// element union may use number operations after a typeof guard without
// losing that runtime-optional representation.
const numbers: number[] = [5];
console.log(numbers[4] < 10, numbers[4] <= 10, numbers[4] > 10, numbers[4] >= 10);
console.log(numbers[4] === numbers[4]);
const missing: number | undefined = numbers[4];
console.log(missing === undefined, missing !== undefined);
let indexCalls = 0;
function missingIndex(): number {
indexCalls++;
return 4;
}
console.log(numbers[missingIndex()] < 10, indexCalls);
const mixed: (string | number)[] = ["first", 20];
const second = mixed[1];
if (typeof second === "number") {
console.log(second + 1, second < 30, second === 20);
}