Parlez-moi des types utilitaires en TypeScript.
sobes.tech IA
Réponse de l'IA
Les types utilitaires en TypeScript sont des types intégrés qui permettent de transformer des types de données existants en nouveaux types, en effectuant diverses opérations utiles. Ils aident à augmenter la flexibilité et la réutilisabilité des types, en réduisant la redondance du code.
Types utilitaires principaux :
-
Partial<Type> : Crée un nouveau type où toutes les propriétés de
Typesont optionnelles.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser sera { id?: number; name?: string; age?: number; } -
Readonly<Type> : Crée un nouveau type où toutes les propriétés de
Typesont en lecture seule.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint sera { readonly x: number; readonly y: number; } -
Pick<Type, Keys> : Crée un type en sélectionnant un ensemble spécifique de propriétés
KeysdeType.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary sera { id: number; name: string; price: number; } -
Omit<Type, Keys> : Crée un type en excluant un ensemble spécifique de propriétés
KeysdeType.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails sera { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion> : Crée un type en excluant de
Typeceux éléments qui peuvent être assignés àExcludedUnion. Utilisé pour les unions (types union).type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors sera 'red' | 'green' | 'blue' -
Extract<Type, Union> : Crée un type en sélectionnant de
Typeceux éléments qui peuvent être assignés àUnion. Utilisé pour les unions.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals sera 'dog' | 'cat' -
NonNullable<Type> : Crée un type en excluant de
Typeles valeursnulletundefined.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString sera string -
Record<Keys, Type> : Crée un type d'objet dont les propriétés ont des clés de
Keyset des valeurs du typeType.type CityPopulation = Record<string, number>; // CityPopulation sera { [key: string]: number } const population: CityPopulation = { "Moscow": 12635466, "Saint Petersburg": 5381033, }; -
Parameters<Type> : Retourne un tuple (tuple) des types des paramètres de la fonction
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams sera [name: string, age: number] -
ReturnType<Type> : Retourne le type de la valeur de retour de la fonction
Type.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult sera number -
ConstructorParameters<Type> : Retourne un tuple ou un tableau des types des paramètres du constructeur de la classe
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams sera [name: string, id: number] -
InstanceType<Type> : Retourne le type de l'instance de la classe
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance sera AnotherClass
L'utilisation des types utilitaires rend le code plus sûr, maintenable et expressif, permettant de gérer efficacement des types de données complexes.