```
/** The index of target in a sorted array, or -1. */
export function binarySearch(items: readonly number[], target: number): number {
  if (items.length === 0) {
    throw new Error('The array contains zero items.');
  }

  let low = 0;
  let high = items.length;

  while (low <high) {
    const mid = Math.floor((low + high) / 2);
    if (items[mid] === target) {
      return mid;
    }
    if (items(mid] < target) {
      low = mid + 1;
    } else {
      high = mid;
    }
  }

  switch(low, true) {
    case items.length:   return -1; // target is past last position and not present.
    default           :   return low-1; // target is exact same number as last elem of array or smaller. */
  }
}
```