function first<T>(array: T[]): T | undefined;
function first<T>(array: T[], n: number): T[];
function first<T>(array: T[], n?: number): T | T[] | undefined;
З одним аргументом first повертає один елемент, а для порожнього масиву — undefined, а не виняток: саме це звільняє кожне місце виклику від власної перевірки. Із зазначенням кількості повертається новий масив, тож дві форми не треба розрізняти під час виконання.
n обмежується так само, як у Array#slice: від'ємне число дає порожній масив, число більше за довжину — увесь масив. Вихідний масив не змінюється.
Параметри
Параметр
Тип
Опис
array
T[]
Масив, з якого читаємо. Не змінюється.
n(необов'язковий)
number
Скільки елементів узяти. Ціле число; пропустіть, щоб узяти один елемент.
Повертає
T | T[] | undefined — перший елемент або новий масив не більш ніж із n елементів.
/**
* Splits a sheet into its header row and its data rows, and says so when the
* sheet turns out to be empty.
*/
export function readTable(sheet: GoogleAppsScript.Spreadsheet.Sheet): {
header: string[];
rows: string[][];
} {
const values = sheet.getDataRange().getValues() as string[][];
const header = first(values);
if (!header) {
throw new Error("The sheet is empty.");
}
return { header, rows: values.slice(1) };
}
function readTable(sheet) {
const values = sheet.getDataRange().getValues();
const header = first(values);
if (!header) {
throw new Error("The sheet is empty.");
}
return { header: header, rows: values.slice(1) };
}
Обмеження кількості
first([1, 2], 10); // => [1, 2] — never more than the array holds
first([1, 2], -1); // => []
first([1, 2], 1.5); // throws TypeError: Input 'n' must be an integer.