TypeScriptTypes utilitaires
Pick<Type, Keys>
Crée un type contenant uniquement les propriétés sélectionnées d’un autre type.
Exemple
#TypeScript
interface User {
id: number
name: string
email: string
passwordHash: string
}
type PublicUser = Pick<User, 'id' | 'name'>
function toPublic(user: User): PublicUser {
return { id: user.id, name: user.name }
}
console.log(toPublic({ id: 7, name: 'Léa', email: 'l@x.fr', passwordHash: '…' }))Résultat
{ id: 7, name: 'Léa' }Définition et utilisation
#Pick<Type, Keys> ne sélectionne dans un type que les champs indiqués. Pick<User, "id" | "name"> est un objet avec seulement les champs id et name, avec exactement les mêmes types que dans User.
C’est utile quand un composant ou une fonction n’a besoin que d’un fragment d’un objet plus grand. Vous n’avez alors pas à transmettre ni à créer l’objet complet, et le type reste lié à sa source.
Les clés doivent exister dans le type source. Une faute de frappe dans le nom d’un champ sera signalée par le compilateur.
Syntaxe
#Syntaxe
type New = Pick<Type, "field1" | "field2">Paramètres de type
#Type
type d’objet
Le type source.Keys
union des clés de Type
Les champs qui doivent rester dans le nouveau type.
Bonnes pratiques
#- Quand il est plus simple d’énumérer les champs à retirer que ceux à garder, utilisez
Omit. - Les types dérivés par
Pickse mettent à jour automatiquement quand le type source change.
Entrées associées
#- Pick vs OmitPick<Type, Keys> sélectionne seulement les champs donnés d’un type, et Omit<Type, Keys> copie tous les champs sauf ceux donnés.
- Omit<Type, Keys>Crée un type sans les propriétés sélectionnées d’un autre type.
- Partial<Type>Crée un type dans lequel toutes les propriétés sont optionnelles.
- keyofCrée une union des noms de clés d’un type d’objet donné.
- Record<Keys, Type>Crée un type d’objet avec des clés données, où chaque valeur a le même type.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.