TypeScript Academy · Les

DeepPartial en DeepReadonly

Bouw recursieve versies van Partial en Readonly.

Les 1 van 413 stappen

DeepPartial en DeepReadonly is een gratis TypeScript Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject TypeScript Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus TypeScript Academy bevat in totaal 4 lessen.

Waarom diepe typenhulpmiddelen?

De ingebouwde Partial en Readonly zijn slechts één niveau diep van toepassing. Voor geneste objecten heb je recursieve versies nodig.

interface Config {
  db: { host: string; port: number };
  app: { name: string };
}
type Shallow = Partial<Config>;
// Shallow.db is still required — only top level is optional

DeepPartial implementeren

Doorloop recursief de objecteigenschappen, maak elke eigenschap optioneel en pas DeepPartial recursief toe als de waarde van de eigenschap een object is.

type DeepPartial<T> = T extends object
  ? { [K in keyof T]?: DeepPartial<T[K]> }
  : T;

DeepPartial in actie

Pas DeepPartial toe op een genest configuratietype en zie hoe alle niveaus optioneel worden.

type PartialConfig = DeepPartial<Config>;
// PartialConfig.db?: { host?: string; port?: number }

const c: PartialConfig = { db: { host: "localhost" } };
// No error — all other fields are optional

DeepReadonly implementeren

Maak elke eigenschap op elke diepte readonly door recursief geneste objecttypen binnen te gaan.

type DeepReadonly<T> = T extends object
  ? { readonly [K in keyof T]: DeepReadonly<T[K]> }
  : T;

DeepReadonly in actie

Een diep bevroren configuratie kan op geen enkel niveau worden gewijzigd.

type ReadonlyConfig = DeepReadonly<Config>;
const cfg: ReadonlyConfig = { db: { host: "localhost", port: 5432 }, app: { name: "my-app" } };
// cfg.db.port = 3000; // Error: readonly

Arrays in diepe typen verwerken

Arrays vereisen speciale behandeling: doorloop elementtypen recursief in plaats van arrays als gewone objecten te behandelen.

type DeepPartial<T> =
  T extends (infer U)[]
    ? DeepPartial<U>[]
    : T extends object
      ? { [K in keyof T]?: DeepPartial<T[K]> }
      : T;

Primitieve typen verwerken

Het basisgeval van de recursie moet primitieve typen ongewijzigd retourneren, niet verpakt in een gemapt objecttype.

type DeepReadonly<T> =
  T extends string | number | boolean | null | undefined ? T
  : T extends (infer U)[] ? ReadonlyArray<DeepReadonly<U>>
  : { readonly [K in keyof T]: DeepReadonly<T[K]> };

DeepPartial en DeepReadonly combineren

Je kunt ze combineren om een diep gedeeltelijk en alleen-lezen type te maken voor het veilig bijwerken van configuraties.

type SafePatch<T> = DeepReadonly<DeepPartial<T>>;

Prestatieoverwegingen

Recursieve typen op zeer grote objecten kunnen de typecontrole van TypeScript vertragen. Overweeg dieptelimieten of luie evaluatie voor prestatiekritieke code.

// For very deep schemas, consider using Zod or io-ts
// which provide runtime + compile-time deep typing

Praktisch gebruik: React-statuspatches

DeepPartial is ideaal voor statuspatchfuncties die alleen de gewijzigde subset van een groot statusobject accepteren.

function patch<T>(state: T, changes: DeepPartial<T>): T {
  return { ...state, ...changes } as T;
}

Samenvatting: diepe typenhulpmiddelen

DeepPartial en DeepReadonly zijn recursieve gemapte typen die hun modificator op elk niveau van een genest object toepassen. Verwerk arrays afzonderlijk en gebruik basisgevallen voor primitieve typen.

Korte controle

Wat is het juiste recursieve basisgeval voor DeepPartial?

Wat je hebt geleerd

Je hebt DeepPartial en DeepReadonly geïmplementeerd met recursieve gemapte typen. Verwerk arrays als een speciaal geval en retourneer primitieve typen in het basisgeval altijd ongewijzigd.

Gratis beginnen

Leer TypeScript met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
101
Lessen
352

Veelgestelde vragen

Is de les “DeepPartial en DeepReadonly” gratis?

Ja — de volledige tekst van “DeepPartial en DeepReadonly” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus TypeScript Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus TypeScript Academy bevat in totaal 4 lessen.

Wat leer ik in “DeepPartial en DeepReadonly”?

Bouw recursieve versies van Partial en Readonly. Je oefent met TypeScript Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met TypeScript Academy te beginnen?

Ervaring vooraf is niet nodig. TypeScript Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “DeepPartial en DeepReadonly”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over TypeScript Academy?

Ja. Elke les over TypeScript Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. DeepPartial en DeepReadonly
  2. Flatten- en UnwrapPromise-hulpprogramma's
  3. TupleToUnion en UnionToIntersection
  4. Een bibliotheek met typehulpprogramma's publiceren
← Terug naar TypeScript Academy