Appearance
Les types utilitaires ​
En TypeScript, en plus des types primitifs et des types personnalisés que vous pouvez créer, il existe plusieurs types utilitaires avancés qui permettent de transformer des types existants de manière sophistiquée. Omit
, ainsi que d'autres types utilitaires similaires, jouent un rôle important dans ces transformations de type. Voici quelques-uns des types utilitaires les plus couramment utilisés :
Omit ​
Omit<T, K>
crée un type en excluant certaines propriétés (K
) d'un type donné (T
). C'est utile pour créer des types basés sur d'autres types, mais sans certaines propriétés.
typescript
interface Personne {
nom: string;
age: number;
adresse: string;
}
type PersonneSansAdresse = Omit<Personne, 'adresse'>;
// Équivalent à :
// type PersonneSansAdresse = {
// nom: string;
// age: number;
// }
Pick ​
Pick<T, K>
est l'opposé de Omit
. Il vous permet de créer un type en choisissant certaines propriétés (K
) d'un type existant (T
).
typescript
type PersonneNomEtAge = Pick<Personne, 'nom' | 'age'>;
// Équivalent à :
// type PersonneNomEtAge = {
// nom: string;
// age: number;
// }
Partial ​
Partial<T>
rend toutes les propriétés d'un type T
optionnelles. C'est utile lors de la modification ou de la construction partielle d'objets.
typescript
type PersonnePartielle = Partial<Personne>;
// Équivalent à :
// type PersonnePartielle = {
// nom?: string;
// age?: number;
// adresse?: string;
// }
Required ​
Required<T>
est l'opposé de Partial
. Il rend toutes les propriétés d'un type T
requises.
typescript
type PersonneComplete = Required<Personne>;
Readonly ​
Readonly<T>
rend toutes les propriétés d'un type T
en lecture seule. Cela signifie que les propriétés ne peuvent pas être réassignées après leur création.
typescript
type PersonneReadonly = Readonly<Personne>;
Record ​
Record<K, T>
crée un type d'objet avec des clés de type K
et des valeurs de type T
. C'est utile pour définir des objets dont les clés sont connues à l'avance.
typescript
type DictionnaireDeNombres = Record<string, number>;
// Un objet avec des clés de type string et des valeurs de type number.
Exclude ​
Exclude<T, U>
crée un type en excluant de T
tous les types qui sont assignables Ă U
. C'est utile pour retirer certains types d'une union.
typescript
type T1 = string | number | boolean;
type T2 = Exclude<T1, number>;
// T2 est maintenant string | boolean
Extract ​
Extract<T, U>
fait le contraire de Exclude
. Il crée un type en extrayant de T
tous les types qui sont assignables Ă U
.
typescript
type T3 = Extract<T1, number | boolean>;
// T3 est maintenant number | boolean
NonNullable ​
NonNullable<T>
crée un type en excluant null
et undefined
de T
.
typescript
type T4 = string | null | undefined;
type T5 = NonNullable<T4>;
// T5 est maintenant string
ReturnType ​
ReturnType<T>
extrait le type de retour d'un type de fonction T
.
typescript
function exemple() {
return { nom: "Alice", age: 25 };
}
type T6 = ReturnType<typeof exemple>;
// T6 est maintenant { nom: string; age: number; }
Parameters ​
Parameters<T>
extrait les types de paramètres d'une fonction sous forme d'un tuple.
typescript
function exemple2(nom: string, age: number) {
// ...
}
type T7 = Parameters<typeof exemple2>;
// T7 est maintenant [string, number]
ConstructorParameters ​
Semblable Ă Parameters
, mais pour les constructeurs de classes.
typescript
class ExempleClasse {
constructor(nom: string, age: number) {}
}
type T8 = ConstructorParameters<typeof ExempleClasse>;
// T8 est maintenant [string, number]
InstanceType ​
InstanceType<T>
extrait le type d'instance d'une classe ou d'un type de constructeur.
typescript
type T9 = InstanceType<typeof ExempleClasse>;
// T9 est maintenant ExempleClasse