```ts
import { assert } from 'assert';

export function waveCount(readings: number[]): number {
  if (readings.length === 0) return 0;

  let count = 0;
  for (let i = 1; i < readings.length; i++) {
    const prevReading = readings[i - 1];
    const currentReading = readings[i];

    if ((prevReading > 0 && currentReading <= 0) || (prevReading <= 0 && currentReading > 0)) {
      count++;
    }
  }

  return count;
}

// Check function to verify the correctness of the waveCount function
function checkWaveCount() {
  assert(waveCount([1, 2, 3, 4]) === 0);
  assert(waveCount([-1, -2, -3, -4]) === 0);
  assert(waveCount([1, -1, 1, -1]) === 4);
  assert(waveCount([5, 6, 7, 8, 9, 1, 2, 3, 4, 5]) === 5);
  console.log('All tests passed!');
}

// Run the check function to verify the solution
checkWaveCount();
```