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;
Avec un seul argument, first renvoie un élément, et undefined pour un tableau vide au lieu de lever une erreur — c'est précisément ce qui épargne à chaque appel son propre test. Avec un nombre, il renvoie un nouveau tableau, de sorte que les deux formes n'ont jamais à être distinguées à l'exécution.
n est borné comme le fait Array#slice: un nombre négatif donne un tableau vide, un nombre supérieur à la longueur donne tout le tableau. L'entrée n'est pas modifiée.
Paramètres
Paramètre
Type
Description
array
T[]
Le tableau dans lequel lire. Il n'est pas modifié.
n(facultatif)
number
Combien d'éléments prendre. Un entier ; omettez-le pour n'en prendre qu'un.
Valeur de retour
T | T[] | undefined — le premier élément, ou un nouveau tableau d'au plus n éléments.
/**
* 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) };
}
Bornage
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.