```ts
/**
 * Counts the number of capital letters and small letters in a given text,
 * returning a two-element array where the first element is the count of capital letters
 * and the second is the count of small letters. Characters that are not letters are
 * ignored, and an empty string returns two zeros.
 *
 * @param text - The input text to be analyzed.
 * @returns An array containing the counts of capital letters and small letters.
 */
export function caseCount(text: string): number[] {
  if (typeof text !== 'string') {
    throw new Error('Input must be a string');
  }

  let countCapitals = 0;
  let countLowercase = 0;

  for (const char of text) {
    const isLetter = /[a-zA-Z]/.test(char);
    if (isLetter) {
      char === char.toUpperCase() ? countCapitals++ : countLowercase++;
    }
  }

  return [countCapitals, countLowercase];
}

// Example check function to verify the correctness of the solution
function checkCaseCount() {
  console.log(caseCount("Hello World")); // Expected output: [2, 8]
  console.log(caseCount("123abcABC")); // Expected output: [1, 4]
  console.log(caseCount("")); // Expected output: [0, 0]
  console.log(caseCount("987654321")); // Expected output: [0, 0]
  console.log(caseCount("!@#$%^&*()_+{}[]|;':\",<.>/?")); // Expected output: [0, 0]
}

checkCaseCount();
```

This solution adheres to the task contract by providing an implementation of `caseCount` that meets the specified requirements and includes a check function with provided data points to verify its correctness.