TypeScript 7 corregge l'accessibilità dei setter in union e intersection
Pubblicato: 24 agosto 2026
Microsoft ha integrato una correzione nel checker nativo di TypeScript che mantiene separate l’accessibilità in lettura e in scrittura per le proprietà sintetizzate da union e intersection.
Cosa è cambiato
In precedenza, l’accessibilità del setter poteva essere ignorata per queste proprietà sintetiche perché il controllo usava di fatto l’accessibilità del getter. Un getter pubblico associato a un setter protetto poteva quindi consentire una scrittura non valida attraverso una union o una 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 protectedIl checker ora registra separatamente l’accessibilità in scrittura. La lettura di foo resta valida, mentre l’assegnazione segnala correttamente un errore di accessibilità.
Perché è importante
Le classi possono esporre intenzionalmente la lettura pubblica limitando le scritture. La correzione preserva questo confine quando TypeScript combina tipi di oggetto in union o intersection, senza ampliare accidentalmente l’accesso in scrittura.
Disponibilità
La modifica è stata integrata nel codice nativo di TypeScript dopo TypeScript 7.0. La fonte non indica una versione npm stabile che la includa, quindi è opportuno controllare le note di rilascio della versione installata prima di fare affidamento su questo comportamento.
Fonte
Leggi la pull request TypeScript integrata: Fix getDeclarationModifierFlagsFromSymbolEx for synthetic properties.