Используйте tuple-тип с обязательным первым элементом и остатком массива: readonly [T, ...T[]].
Сделайте так, чтобы функция принимала массив минимум с одним элементом, а TypeScript выдавал ошибку для пустого массива.
Используйте 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.