Recursive Conditional Types
TypeScript 🔴 SeniorDé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.