DeepPartial en DeepReadonly
Bouw recursieve versies van Partial en Readonly.
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 optionalDeepPartial 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 optionalDeepReadonly 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: readonlyArrays 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 typingPraktisch 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.
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
- DeepPartial en DeepReadonly
- Flatten- en UnwrapPromise-hulpprogramma's
- TupleToUnion en UnionToIntersection
- Een bibliotheek met typehulpprogramma's publiceren