Recursive Conditional Types

TypeScript 🔴 Senior

Définition

Types conditionnels qui se referencent eux-mêmes pour traiter des structures de profondeur variable. Permettent des transformations profondes sur les types.

Analogie

Comme une équipe de nettoyage qui descend étage par étage dans un immeuble — chaque niveau est traite avant de passer au suivant.

Exemple de code

type DeepReadonly<T> = T extends object
  ? { readonly [K in keyof T]: DeepReadonly<T[K]> }
  : T;
type Nested = { a: { b: { c: string } } };
type R = DeepReadonly<Nested>;

Cas d'usage

Créer des transformations profondes (DeepPartial, DeepReadonly, flatten) sur des structures imbriquées.

Anti-pattern

Récursion trop profonde sans limite — TS a une profondeur max (~50) et génère des erreurs cryptiques.
#advanced#type-system

← → au clavier pour passer d'une fiche à l'autre