TypeScriptTypes utilitaires
Extract<Type, Union>
Garde dans une union uniquement les types compatibles avec un type donné.
Exemple
#TypeScript
type Action =
| { type: 'add'; title: string }
| { type: 'remove'; id: number }
| { type: 'clear' }
type AddAction = Extract<Action, { type: 'add' }>
// type AddAction = { type: 'add'; title: string }
const action: AddAction = { type: 'add', title: 'Nouvelle tâche' }
console.log(action.title)Résultat
Nouvelle tâche
Définition et utilisation
#Extract<Type, Union> fait l’inverse d’Exclude : il ne garde que les membres de l’union qui correspondent au second argument.
Il est particulièrement utile avec les unions discriminées. Extract<Action, { type: "add" }> extrait de l’union d’actions exactement la variante avec type: "add", avec tous ses champs.
Tout comme Exclude, il est construit sur un type conditionnel qui renvoie never pour les membres qui ne correspondent pas.
Syntaxe
#Syntaxe
type New = Extract<Union, Condition>Paramètres de type
#Type
union
L’union dans laquelle vous sélectionnez des types.Union
type
Le type auquel les membres conservés doivent correspondre.
Bonnes pratiques
#- Avec les unions discriminées,
Extractest la façon la plus pratique de nommer une seule variante. - Si le résultat est
never, aucun membre de l’union ne correspond à la condition. Vérifiez l’orthographe des littéraux.
Entrées associées
#Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.