Skip to content

select ​

La fonction select() a un rôle proche de filter, mais permet en plus de transformer les éléments conservés. Elle est particulièrement utile pour obtenir une discrimination de type côté sortie, sans devoir écrire un type guard explicite (la sortie est inférée à partir des valeurs passées à select()).

Exemple interactif ​

Syntaxe ​

Signature classique ​

typescript
function select<
	GenericInput extends readonly unknown[],
	GenericSelect extends ArraySelectSelect,
>(
	input: GenericInput,
	theFunction: (
		params: ArraySelectParams<GenericInput>
	) => GenericSelect | ArraySelectSkip,
): GenericSelect["-select"][]

Signature currifiée ​

typescript
function select<
	GenericInput extends readonly unknown[],
	GenericSelect extends ArraySelectSelect,
>(
	theFunction: (
		params: ArraySelectParams<GenericInput>
	) => GenericSelect | ArraySelectSkip,
): (input: GenericInput) => GenericSelect["-select"][]

Paramètres auxiliaires ​

typescript
interface ArraySelectParams<
	GenericInputArray extends readonly unknown[],
> {
	element: GenericInputArray[number];
	index: number;
	self: GenericInputArray;
	skip(): ArraySelectSkip;
	select<GenericOutput extends unknown = unknown>(
		output: GenericOutput
	): ArraySelectSelect<GenericOutput>;
}

Paramètres ​

  • input : Le tableau à parcourir.
  • theFunction : Fonction appelée pour chaque élément.
  • params.element : L'élément courant.
  • params.index : Index de l'élément courant.
  • params.self : Le tableau complet.
  • params.skip() : Ignore l'élément (n'ajoute rien au résultat).
  • params.select(output) : Conserve l'élément en ajoutant output au résultat.

Valeur de retour ​

Un nouveau tableau contenant uniquement les valeurs passées à select(), dans le même ordre que l'itération. Le typage de sortie est inféré comme une union des valeurs sélectionnées.

Voir aussi ​

  • filter - Conserve des éléments (sans transformation)
  • map - Transforme chaque élément (sans filtrage)
  • flatMap - Transforme puis aplatit le résultat

Diffusé sous licence MIT.