Сделайте так, чтобы функция принимала массив минимум с одним элементом, а TypeScript выдавал ошибку для пустого массива.

Используйте tuple-тип с обязательным первым элементом и остатком массива: readonly [T, ...T[]].

Короткий ответ

Что ответить на собеседовании

Используйте tuple-тип с обязательным первым элементом и остатком массива: readonly [T, ...T[]].

Подробный разбор

Ответ с пояснениями

Используйте tuple-тип с обязательным первым элементом и остатком массива: readonly [T, ...T[]].

Так компилятор отличает непустую последовательность от обычного массива неизвестной длины.

function first<T>(items: readonly [T, ...T[]]): T {
  return items[0];
}
first([1, 2]);
// first([]); // ошибка TypeScript

Для данных, пришедших во время выполнения, нужна проверка length и сужение типа: TypeScript не валидирует JSON.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее