```ts
export function searchRange(nums: number[], target: number): [number, number] {
  if (nums.length === 0) {
    return [-1, -1];
  }

  // Find the leftmost index of target
  let left = 0;
  let right = nums.length - 1;
  let firstIndex = -1;

  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (nums[mid] === target) {
      firstIndex = mid;
      right = mid - 1; // Continue searching to the left
    } else if (nums[mid] < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }

  if (firstIndex === -1) {
    return [-1, -1];
  }

  // Find the rightmost index of target
  left = 0;
  right = nums.length - 1;
  let lastIndex = -1;

  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    if (nums[mid] === target) {
      lastIndex = mid;
      left = mid + 1; // Continue searching to the right
    } else if (nums[mid] < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }

  return [firstIndex, lastIndex];
}
```