TypeScript 7, birleşimlerde ve kesişimlerde setter erişilebilirliğini düzeltiyor
Yayımlandı: 24 Ağustos 2026
Microsoft, birleşimlerden ve kesişimlerden sentezlenen özelliklerde okuma ve yazma erişilebilirliğini ayrı tutan bir yerel TypeScript denetleyicisi düzeltmesini birleştirdi.
Neler değişti
Önceden denetim fiilen getter erişilebilirliğini kullandığı için bu sentetik özelliklerde setter erişilebilirliği göz ardı edilebiliyordu. Bu nedenle, korumalı bir setter ile eşleştirilen genel bir getter, birleşim veya kesişim üzerinden geçersiz bir yazma işlemine izin verebiliyordu.
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 protectedDenetleyici artık yazma erişilebilirliğini ayrı olarak kaydediyor. foo özelliğini okumak geçerli olmaya devam ederken bu özelliğe atama yapmak doğru biçimde bir erişilebilirlik hatası bildiriyor.
Neden önemli
Sınıflar, yazma erişimini kısıtlarken okuma erişimini kasıtlı olarak genel kullanıma açabilir. Bu düzeltme, TypeScript nesne türlerini birleşimlerde veya kesişimlerde birleştirdiğinde yazma erişimini yanlışlıkla genişletmek yerine bu sınırı koruyor.
Kullanılabilirlik
Değişiklik, TypeScript 7.0’dan sonra yerel TypeScript kod tabanına birleştirildi. Kaynak, değişikliği içeren kararlı bir npm sürümü belirtmediğinden bu davranışa güvenmeden önce yüklü sürümün sürüm notlarını kontrol edin.
Kaynak
Birleştirilen TypeScript pull request’ini okuyun: Fix getDeclarationModifierFlagsFromSymbolEx for synthetic properties.