TypeScript 7 corrige l'accessibilité des setters dans les unions et intersections
Publié le : 24 août 2026
Microsoft a intégré un correctif au vérificateur natif de TypeScript afin de conserver séparément l’accessibilité en lecture et en écriture pour les propriétés synthétisées à partir d’unions et d’intersections.
Ce qui a changé
Auparavant, l’accessibilité du setter pouvait être ignorée pour ces propriétés synthétiques, car la vérification utilisait en pratique l’accessibilité du getter. Un getter public associé à un setter protégé pouvait donc autoriser une écriture non valide à travers une union ou une intersection.
declare class C1 { get foo(): number; protected set foo(value: number);}
declare class C2 { get foo(): number; protected set foo(value: number);}
declare const c: C1 | C2;c.foo; // Valid: read access is publicc.foo = 123; // Invalid: write access is protectedLe vérificateur enregistre désormais séparément l’accessibilité en écriture. La lecture de foo reste valide, tandis qu’une affectation signale correctement une erreur d’accessibilité.
Pourquoi c’est important
Les classes peuvent volontairement exposer des lectures publiques tout en restreignant les écritures. Le correctif préserve cette limite lorsque TypeScript combine des types d’objets dans des unions ou des intersections, au lieu d’élargir accidentellement l’accès en écriture.
Disponibilité
La modification a été intégrée à la base de code native de TypeScript après TypeScript 7.0. La source n’indique pas de version npm stable qui l’inclut ; consultez donc les notes de version de la version installée avant de vous fier à ce comportement.
Source
Consultez la pull request TypeScript intégrée : Fix getDeclarationModifierFlagsFromSymbolEx for synthetic properties.