or
La fonction or() combine plusieurs prédicats ou type guards : si au moins un passe, le résultat est vrai et le type est affiné à l'union des cas acceptés.
Exemple interactif
Syntaxe
typescript
type ExtractPredicate<
GenericPredicatedInput extends readonly AnyFunction<any[], boolean>[]
> = GenericPredicatedInput extends readonly [
(input: any, ...args: any[]) => input is infer InferredPredicate,
...infer InferredRest extends readonly AnyPredicate[]
] ? InferredRest extends readonly []
? InferredPredicate
: ExtractPredicate<InferredRest> extends infer InferredResult
? IsEqual<InferredResult, never> extends true
? never
: InferredPredicate | InferredResult
: never
: never;Signatures classiques
typescript
// Type Guard predicate
function or<
GenericInput extends unknown,
const GenericArrayPredicatedInput extends readonly [
(input: GenericInput) => input is any,
(input: GenericInput) => input is any,
...((input: GenericInput) => input is any)[]
]
>(
input: GenericInput,
predicatedList: GenericArrayPredicatedInput
): input is Extract<GenericInput, ExtractPredicate<GenericArrayPredicatedInput>>;
// Boolean predicate
function or<
GenericInput extends unknown
>(
input: GenericInput,
predicatedList: [
(input: GenericInput) => boolean,
(input: GenericInput) => boolean,
...((input: GenericInput) => boolean)[]
]
): boolean;Signatures currifiées
typescript
// Type Guard predicate
function or<
GenericInput extends unknown,
const GenericArrayPredicatedInput extends readonly [
(input: GenericInput) => input is any,
(input: GenericInput) => input is any,
...((input: GenericInput) => input is any)[]
]
>(
predicatedList: GenericArrayPredicatedInput
): (input: GenericInput) => input is Extract<GenericInput, ExtractPredicate<GenericArrayPredicatedInput>>;
// Boolean predicate
function or<
GenericInput extends unknown
>(
predicatedList: [
(input: GenericInput) => boolean,
(input: GenericInput) => boolean,
...((input: GenericInput) => boolean)[]
]
): (input: GenericInput) => boolean;Paramètres
predicatedList: Tableau de fonctions testant l'entrée (peuvent être des type guards).input(surcharge directe) : Valeur testée.
Valeur de retour
Un booléen (ou un type guard si les prédicats en sont) vrai si au moins un prédicat passe.
Voir aussi
and- Intersection de prédicats
