apps-script-utils (Français) 2.1.1 Help

requireNoNilElements

function requireNoNilElements<T>(values: T[], message?: string): NonNullable<T>[]; function requireNoNilElements<T>(values: readonly T[], message?: string): readonly NonNullable<T>[]; function requireNoNilElements<T>(values: Set<T>, message?: string): Set<NonNullable<T>>; function requireNoNilElements<K, V>(values: Map<K, V>, message?: string): Map<K, NonNullable<V>>; function requireNoNilElements<T extends null | undefined>(values: T, message?: string): T; function requireNoNilElements(values: unknown, message?: string): unknown;

Une collection trouée passe toutes les autres gardes : elle n'est ni nulle, ni vide, et reste un tableau valide. Le trou ressort bien plus tard sous forme de cellule blanche ou de Cannot read properties of undefined. Cette garde l'attrape à la frontière et rend la collection typée sans les valeurs nulles.

Elle accepte un tableau, un Set ou une Map — pour une Map, ce sont les valeurs qui sont vérifiées, pas les clés. Une collection null ou undefined passe telle quelle : ce cas relève de requireNonNull, et empiler les deux gardes ne doit pas le signaler deux fois. Une collection vide passe. Seul le premier niveau est examiné. Les trous d'un tableau comptent comme undefined, donc [1, , 3] est rejeté.

Paramètres

Paramètre

Type

Description

values

unknown

La collection à vérifier.

message (facultatif)

string

Le message de l'exception. À défaut, un message par défaut est utilisé.

Valeur de retour

unknown — la même collection, typée sans null ni undefined dans le type de ses éléments.

Exceptions

Exception

Condition

IllegalArgumentException

un élément vaut null ou undefined.

IllegalArgumentException

values n'est ni un tableau, ni un Set, ni une Map.

Exemples

Vérifier une ligne avant de l'écrire

/** * Appends a contact row, refusing a row with a gap in it rather than writing a * blank cell that shows up as a bug days later. */ export function appendContact( sheet: GoogleAppsScript.Spreadsheet.Sheet, name: string | null, email: string | null ): void { const row = requireNoNilElements([name, email], "name and email are both required"); sheet.getRange(sheet.getLastRow() + 1, 1, 1, row.length).setValues([row]); }
function appendContact(sheet, name, email) { const row = requireNoNilElements([name, email], "name and email are both required"); sheet.getRange(sheet.getLastRow() + 1, 1, 1, row.length).setValues([row]); }

Affiner le type des éléments

import { requireNoNilElements } from "apps-script-utils"; const values: Array<string | null> = readColumn(); const names: string[] = requireNoNilElements(values, "the column has empty cells");

Ce qui passe et ce qui lève

requireNoNilElements([1, 2, 3]); // => [1, 2, 3] — the same array requireNoNilElements(new Map([["a", 1]])); // => the same Map requireNoNilElements([]); // => [] requireNoNilElements(null); // => null — not this guard's concern requireNoNilElements([1, undefined, 3]); // throws IllegalArgumentException requireNoNilElements([1, , 3]); // throws — a hole is undefined

Voir aussi

Code source

src/lang/array/requireNoNilElements.ts

23 September 2026

Cette documentation a été générée par une IA (Claude) à partir du code source de la bibliothèque.