TypeScript 5.4, tip sistemine önemli yenilikler getirdi. Bu yazıda en dikkat çekici özellikleri pratik örneklerle inceliyoruz.
NoInfer Utility Tipi
TypeScript'in tip çıkarımını belirli parametreler için devre dışı bırakmanızı sağlar. Özellikle generic fonksiyonlarda istenmeyen tip genişlemesini önler.
// NoInfer olmadan: T, 'a' | 'b' | 'c' olarak çıkarılır function createStore<T>(items: T[], defaultItem: T): T { return defaultItem; } // NoInfer ile: T sadece items'tan çıkarılır function createStore<T>(items: T[], defaultItem: NoInfer<T>): T { return defaultItem; } createStore(['a', 'b'], 'c'); // ✅ Hata: 'c' T'ye uymuyor
Closure'larda Narrowing İyileştirmesi
TypeScript 5.4, son atamadan sonra değişmeyen değişkenleri closure içinde de doğru şekilde daraltabiliyor.
function processUser(user: User | null) { if (!user) return; // TypeScript artık setTimeout içinde de user'ın null olmadığını biliyor setTimeout(() => { console.log(user.name); // ✅ Hata yok }, 1000); }
Object.groupBy ve Map.groupBy Tipleri
ES2024 ile gelen Object.groupBy artık TypeScript'te tam tip desteğine sahip.
const posts = [ { title: 'React', category: 'frontend' }, { title: 'Docker', category: 'devops' }, ]; const grouped = Object.groupBy(posts, p => p.category); // Tip: Partial<Record<string, { title: string; category: string }[]>>
Sonuç
TypeScript 5.4, özellikle NoInfer ile generic API tasarımını çok daha güvenli hale getiriyor. Projelerinizi güncellemenizi şiddetle tavsiye ederim.