Partial<Type>
Crée un type dans lequel toutes les propriétés sont optionnelles.
Exemple
#interface User {
id: number
name: string
email: string
}
function updateUser(user: User, changes: Partial<User>): User {
return { ...user, ...changes }
}
const lea: User = { id: 1, name: 'Léa', email: 'lea@example.com' }
const updated = updateUser(lea, { email: 'lea@codeworlds.fr' })
console.log(updated){ id: 1, name: 'Léa', email: 'lea@codeworlds.fr' }Définition et utilisation
#Partial<Type> prend un type d’objet existant et renvoie une copie dans laquelle chaque propriété a un point d’interrogation, c’est-à-dire qu’elle est optionnelle. Vous n’avez pas besoin de répéter une définition juste pour autoriser des données incomplètes.
C’est surtout utile pour les mises à jour : une fonction updateUser n’accepte que les champs qui changent, le reste restant inchangé. C’est pareil pour les formulaires remplis étape par étape, ou pour des paramètres par défaut remplacés par l’utilisateur.
Partial fonctionne de façon superficielle. Les objets imbriqués restent tels qu’ils étaient, donc leurs champs restent obligatoires.
Syntaxe
#type New = Partial<Type>Paramètres de type
#Type
type d’objet
Le type dont les propriétés doivent devenir optionnelles.
Plus d’exemples
#type UserDraft = Partial<User>
// type UserDraft = {
// id?: number
// name?: string
// email?: string
// }
const draft: UserDraft = { name: 'Lucas' } // correct
const empty: UserDraft = {} // également correctinterface Settings {
theme: 'dark' | 'light'
fontSize: number
sounds: boolean
}
const defaults: Settings = { theme: 'dark', fontSize: 16, sounds: true }
function createSettings(overrides: Partial<Settings>): Settings {
return { ...defaults, ...overrides }
}
console.log(createSettings({ sounds: false })){ theme: 'dark', fontSize: 16, sounds: false }Bonnes pratiques
#- Quand vous avez besoin de l’inverse, c’est-à-dire rendre tous les champs obligatoires, utilisez
Required<Type>. - Si seuls certains champs doivent être optionnels, combinez les types :
Omit<User, "email"> & Partial<Pick<User, "email">>.
Entrées associées
#- Required<Type>Crée un type dans lequel toutes les propriétés sont obligatoires.
- Readonly<Type>Crée un type dans lequel toutes les propriétés sont en lecture seule.
- Pick<Type, Keys>Crée un type contenant uniquement les propriétés sélectionnées d’un autre type.
- Omit<Type, Keys>Crée un type sans les propriétés sélectionnées d’un autre type.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.