Les types s'effacent à l'exécution — mais ils s'exécutent à la compilation.Types erase at runtime — but they run at compile time.
On répète depuis le Vol 2 que les types s'effacent : zéro coût au runtime. C'est vrai — et c'est la moitié de l'histoire. Au moment de la compilation, le vérificateur exécute réellement tes types : il déroule les récursions, multiplie les unions, compare des structures. Un type trop intelligent ne ralentit pas ton programme, il ralentit tsc et l'éditeur — une seconde de latence à chaque survol, une autocomplétion qui rame. Le prix existe ; il a juste changé d'endroit.Since Vol 2 we've repeated that types erase: zero runtime cost. True — and it's half the story. At compile time, the checker actually runs your types: it unrolls recursions, multiplies unions, compares structures. A too-clever type doesn't slow your program, it slows tsc and the editor — a second of lag on every hover, sluggish autocomplete. The price exists; it just moved.
// Un type récursif élégant — appliqué à une config profonde : type DeepPartial<T> = T extends object ? { [K in keyof T]?: DeepPartial<T[K]> } : T; type Draft = DeepPartial<HugeNestedConfig>; // 12 niveaux d'imbrication // au survol : "..." après une seconde ; l'autocomplétion rame à chaque frappe
Le runtime ne voit jamais la différence — les deux types s'effacent pareil. Mais l'éditeur, lui, paie : le type récursif se déroule à chaque frappe, le type plat ne coûte rien. Le coût d'un type se mesure en secondes de compilation, pas d'exécution.The runtime never sees the difference — both types erase the same. But the editor pays: the recursive type unrolls on every keystroke, the flat type costs nothing. A type's cost is measured in seconds of compilation, not execution.
// Le sous-ensemble réellement éditable, écrit à plat : type Draft = { title?: string; theme?: { mode?: "light" | "dark" }; }; // au survol : instantané ; tsc ne calcule rien ; on lit la forme d'un coup d'œil
« Est-ce que je paie le bon prix ? » Un type a un coût de compilation réel — temps de tsc, latence de l'éditeur. Avant d'écrire un type calculé, demande si la garantie vaut la seconde d'attente qu'elle ajoutera à chaque frappe de l'équipe."Am I paying the right price?" A type has a real compile cost — tsc time, editor lag. Before writing a computed type, ask whether the guarantee is worth the second of wait it adds to every keystroke for the team.
Le Vol 6 prévenait contre le type illisible ; ce numéro en chiffre l'autre coût, mesurable celui-là : le temps de compilation. La lenteur de l'éditeur n'est pas une fatalité ni un mystère — c'est souvent un type trop ambitieux qui se déroule des milliers de fois. On apprend à le voir, et à arbitrer.Vol 6 warned against the unreadable type; this issue quantifies its other, measurable cost: compile time. Editor slowness isn't a fate or a mystery — it's often an over-ambitious type unrolling thousands of times. You learn to see it, and to arbitrate.