TypeScript Academy · Lektion

Å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.

Lektion 3 av 38 steg

Å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.

Gratis att börja

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

  1. Generiska interfaces och typalias
  2. Villkorstyper (introduktion) och distribution över unioner
  3. Återanvändbara mönster för datamodeller
← Tillbaka till TypeScript Academy