TypeScript 7 corrige a acessibilidade de setters em unions e intersections
Publicado: 24 de agosto de 2026
A Microsoft integrou uma correção no verificador nativo do TypeScript que mantém separadas as acessibilidades de leitura e escrita para propriedades sintetizadas a partir de unions e intersections.
O que mudou
Antes, a acessibilidade do setter podia ser ignorada nessas propriedades sintéticas porque a verificação usava efetivamente a acessibilidade do getter. Assim, um getter público combinado com um setter protegido podia permitir uma escrita inválida por meio de uma union ou 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 protectedO verificador agora registra a acessibilidade de escrita separadamente. A leitura de foo continua válida, enquanto a atribuição relata corretamente um erro de acessibilidade.
Por que isso importa
Classes podem expor leituras públicas de forma intencional enquanto restringem escritas. A correção preserva esse limite quando o TypeScript combina tipos de objeto em unions ou intersections, em vez de ampliar acidentalmente o acesso de escrita.
Disponibilidade
A mudança foi integrada ao código nativo do TypeScript após o TypeScript 7.0. A fonte não identifica uma versão npm estável que a inclua; portanto, consulte as notas de versão da versão instalada antes de depender desse comportamento.
Fonte
Leia a pull request integrada do TypeScript: Fix getDeclarationModifierFlagsFromSymbolEx for synthetic properties.