Ce guide explore le type Record
de TypeScript, un outil puissant pour créer des objets avec des types de valeur cohérents. Nous couvrirons sa définition, sa syntaxe, ses comparaisons avec les tuples, ses applications pratiques comme la manipulation exhaustive des cas et la cartographie des énumérations, et des utilisations avancées avec des types d'utilité comme Partial
, Pick
, et Readonly
.
Comprendre le Record
type
Le type Record
vous permet de définir les types d'objets où toutes les valeurs partagent le même type, tandis que les clés peuvent varier. Sa définition est:
Record<Keys, Type>
Keys
: Une union de littéraux de chaînes ou un type dérivé d'une union, définissant les clés possibles. Type
: Le type de toutes les valeurs associées aux clés. par exemple, Record<string, number>
crée un objet où chaque clé est une chaîne et chaque valeur est un nombre.
Record
vs Tuple
Les deux gèrent les collections de données, mais diffèrent considérablement:
Record
: Propriétés nommées avec un type de valeur fixe. Idéal pour les mappages de valeurs clés. Tuple
: Liste des éléments ordonnés, chacun potentiellement avec un type différent. Utile pour les collections de taille fixe. Exemple:
// Record: string keys, number values type AgeMap = Record<string, number>; // Tuple: string and number in specific order type Person = [string, number];
Basic Record
Utilisation
La définition d'un Record
implique de spécifier les types de clé et de valeur:
// Object with string keys and string values type User = Record<string, string>;
Applications pratiques
Gestion exhaustive des cas: Assurez-vous que tous les cas d'énumération ou d'union sont manipulés:
enum Status { Pending, Completed, Failed } const statusMessages: Record<Status, string> = { [Status.Pending]: "Request pending...", [Status.Completed]: "Request complete!", [Status.Failed]: "Request failed." };
Vérification des types génériques: Créer des fonctions réutilisables qui génèrent des enregistrements:
function createRecord<K extends string, T>(keys: K[], value: T): Record<K, T> { return keys.reduce((acc, key) => ({ ...acc, [key]: value }), {}); }
Enum to Data Mapping: Créer des tables de recherche à partir des enums:
enum Color { Red, Green, Blue } const colorHex: Record<Color, string> = { };
Tables de recherche: Carte efficacement les clés des valeurs:
type CountryCode = "US" | "CA"; interface CountryInfo { name: string; } const countries: Record<CountryCode, CountryInfo> = { US: { name: "United States" }, CA: { name: "Canada" } };
itérer les types Record
Plusieurs méthodes permettent l'itération:
Object.entries()
: itère sur les paires de valeurs clés. for...in
: itérate sur les clés. Object.keys()
: Renvoie un tableau de clés. Object.values()
: Renvoie un tableau de valeurs. Utilisation avancée avec les types d'utilité
combinant Record
avec d'autres types d'utilité améliore ses capacités:
Pick
: sélectionne des propriétés spécifiques:
type Product = { name: string; price: number; description: string }; type ShortProduct = Pick<Product, "name" | "price">;
Readonly
: Crée des objets immuables:
type ImmutableProduct = Readonly<Product>;
Partial
: rend les propriétés facultatives:
Record<Keys, Type>
imbriqué Record
s : Créez des structures de données hiérarchiques complexes.
Conclusion
Le type Record
est un atout précieux dans TypeScript, offrant une façon concise et en sécurité de gérer des objets avec des types de valeur cohérents. Sa flexibilité, combinée à d'autres types d'utilité, permet la création d'un code robuste et maintenable. Pour une exploration plus approfondie, consultez la documentation officielle de typeScript et d'autres ressources.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!