Motifs réutilisables pour les modèles de données
Appliquez des motifs génériques à des modèles réels : Paginated , Result , DTO avec Pick/Omit/Partial et dictionnaires indexés par identifiant.
Motifs réutilisables pour les modèles de données est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 3 leçons au total.
Introduction
Objectif : regrouper les structures de données courantes sous forme de types génériques afin de réutiliser la structure sans perdre la sûreté des types.
- Paginated<T>
- Result<T,E>
- DTO avec Pick/Omit/Partial
- Mappages indexés par id
Paginated<T>
Paginated<T> centralise les métadonnées et conserve le type d'élément T précis pour les listes.
type Paginated<T> = {
items: T[];
total: number;
page: number;
pageSize: number;
};
type User = { id: number; name: string };
const page1: Paginated<User> = {
items: [{ id: 1, name: "Ada" }],
total: 10,
page: 1,
pageSize: 5,
};
console.log(page1.items[0].name);Result<T,E>
Result<T,E> modélise explicitement la réussite ou l'échec avec un discriminant (ok) pour effectuer des branchements sûrs.
type Ok<T> = { ok: true; data: T };
type Err<E = string> = { ok: false; error: E };
type Result<T, E = string> = Ok<T> | Err<E>;
function readUser(id: number): Result<{ id: number; name: string }> {
return id > 0 ? { ok: true, data: { id, name: "Ada" } } : { ok: false, error: "not found" };
}
const r = readUser(1);
if (r.ok) {
console.log(r.data.name);
} else {
console.error(r.error);
}Modèles de DTO
Avec Pick/Omit/Partial, vous dérivez des types DTO concis à partir de votre modèle central, sans duplication.
type User = { id: number; name: string; email?: string; role: "user" | "admin" };
type UserCreateDto = Pick<User, "name" | "email">; // fields required to create
// Update = partial editable fields
type UserUpdateDto = Partial<Pick<User, "name" | "email">>;
const createBody: UserCreateDto = { name: "Ada", email: "a@x.io" };
const updateBody: UserUpdateDto = { name: "Ada L." };MapById<T>
MapById<T> indexe les entités par id pour une recherche rapide. Contraignez T afin de garantir l'existence d'un id.
type Key = string | number;
type MapById<T extends { id: Key }> = Record<Key, T>;
const byId: MapById<{ id: number; name: string }> = {
1: { id: 1, name: "Ada" },
2: { id: 2, name: "Lin" },
};
console.log(byId[1].name);Conseils
Conseils :
- Gardez les modèles petits et composables.
- Privilégiez les unions discriminées pour les machines à états.
- Déduisez les DTO des modèles : évitez les copies manuelles.
Vérification de Paginated<T>
Vérification rapide : pourquoi définir un type générique Paginated<T> ?
Récapitulatif
Récapitulatif : généralisez les structures récurrentes : Paginated<T>, Result<T,E>, les DTO avec Pick/Omit/Partial et les mappages indexés par id. Les petites fonctions utilitaires s'adaptent à toutes les fonctionnalités.
Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « Motifs réutilisables pour les modèles de données » est-elle gratuite ?
Oui — le texte complet de « Motifs réutilisables pour les modèles de données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Motifs réutilisables pour les modèles de données » ?
Appliquez des motifs génériques à des modèles réels : Paginated , Result , DTO avec Pick/Omit/Partial et dictionnaires indexés par identifiant. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.
Combien de temps prend la leçon « Motifs réutilisables pour les modèles de données » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Interfaces et alias de types génériques
- Types conditionnels (introduction) et distribution sur les unions
- Motifs réutilisables pour les modèles de données