Återanvändbara mönster för datamodeller
Tillämpa generiska mönster på verkliga modeller: Paginated , Result , DTO:er med Pick/Omit/Partial och mappar med id som nyckel.
Återanvändbara mönster för datamodeller är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 3 lektioner.
Introduktion
Mål: Paketera vanliga datastrukturer som generiska typer så att strukturen kan återanvändas utan att typsäkerheten går förlorad.
- Paginated<T>
- Result<T,E>
- DTO:er med Pick/Omit/Partial
- Avbildningar med id som nyckel
Paginated<T>
Paginated<T> samlar metadata på ett ställe och bevarar den precisa objekttypen T för listor.
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> modellerar framgång och misslyckande explicit med en diskriminator (ok) för säker förgrening.
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);
}DTO-mönster
Med Pick/Omit/Partial härleder ni koncisa DTO-typer från kärnmodellen – utan duplicering.
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> indexerar entiteter efter id för snabb uppslagning. Begränsa T för att säkerställa att ett id finns.
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);Tips
Tips:
- Håll mönstren små och komponerbara.
- Föredra diskriminerade unioner för tillståndsmaskiner.
- Härled DTO:er från modeller och undvik manuella kopior.
Kontroll av Paginated<T>
Snabbkontroll: Varför definiera en generisk Paginated<T>?
Sammanfattning
Sammanfattning: Generalisera återkommande strukturer: Paginated<T>, Result<T,E>, DTO:er med Pick/Omit/Partial och id-indexerade avbildningar. Små hjälptyper kan återanvändas i många funktioner.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 101
- Lektioner
- 352
Vanliga frågor
Är lektionen ”Återanvändbara mönster för datamodeller” gratis?
Ja – hela texten till ”Återanvändbara mönster för datamodeller” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”Återanvändbara mönster för datamodeller”?
Tillämpa generiska mönster på verkliga modeller: Paginated , Result , DTO:er med Pick/Omit/Partial och mappar med id som nyckel. Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?
Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 3.
Hur lång tid tar lektionen ”Återanvändbara mönster för datamodeller”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?
Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Generiska interfaces och typalias
- Villkorstyper (introduktion) och distribution över unioner
- Återanvändbara mönster för datamodeller