JavaScript her yıl yeni özelliklerle güncellenir. ES2024 (ES15) ve ES2023 sürümleri, günlük geliştirme deneyimini iyileştiren pratik eklemeler getirdi. Bu makalede en kullanışlı yenilikleri gerçek kod örnekleriyle inceliyoruz.
Object.groupBy ve Map.groupBy
En çok beklenen özelliklerden biri: nesneleri ve dizileri belirli bir kritere göre gruplamak artık döngüye gerek yok.
// Temporal — modern tarih/saat API'si (polyfill gerekiyor)import { Temporal } from '@js-temporal/polyfill';// Basit tarih oluşturmaconst bugun = Temporal.Now.plainDateISO(); // 2025-09-15const simdi = Temporal.Now.instant(); // Tam zaman damgası// Timezone-aware tarihconst istanbul = Temporal.Now.zonedDateTimeISO('Europe/Istanbul');console.log(istanbul.toString()); // 2025-09-15T14:30:00+03:00[Europe/Istanbul]// Aritmetikconst gelecekAy = bugun.add({ months: 1 });const haftaOnce = bugun.subtract({ weeks: 1 });// Karşılaştırmaconst fark = Temporal.PlainDate.compare( Temporal.PlainDate.from('2025-01-01'), Temporal.PlainDate.from('2025-12-31')); // -1 (ilk, ikinciden önce)// Durationconst sure = Temporal.Duration.from({ hours: 2, minutes: 30 });const bitis = istanbul.add(sure);
Structuring ve Ergonomik İyileştirmeler
// JAVASCRIPT //
// Logical Assignment Operators (ES2021 ama hâlâ az bilinen)let kullanici = { ad: 'Ali', ayarlar: null };// ||= — sadece falsy ise atakullanici.ayarlar ||= { tema: 'karanlik', dil: 'tr' };// ??= — sadece null/undefined ise ata (0 ve '' korunur)kullanici.puan ??= 0;// &&= — sadece truthy ise güncellekullanici.profil &&= { ...kullanici.profil, guncellendi: new Date() };// using declaration (Stage 3 — Explicit Resource Management)// try/finally yerine otomatik kaynak kapatmaclass VeritabaniBaglantisi { [Symbol.dispose]() { console.log('Bağlantı kapatıldı'); this.kapat(); }}{ using baglanti = new VeritabaniBaglantisi(); await baglanti.sorgu('SELECT ...'); // Blok bitince [Symbol.dispose] otomatik çağrılır}
WeakRef ve FinalizationRegistry
// JAVASCRIPT //
// WeakRef — bellek sızıntısı olmadan önbellekclass Onbellek { #depo = new Map(); #kayit = new FinalizationRegistry(anahtar => { this.#depo.delete(anahtar); console.log(`${anahtar} önbellekten temizlendi`); }); ayarla(anahtar, deger) { const ref = new WeakRef(deger); this.#depo.set(anahtar, ref); this.#kayit.register(deger, anahtar); } al(anahtar) { return this.#depo.get(anahtar)?.deref() ?? null; }}// Büyük nesneleri önbellekleyin — GC gerekirse otomatik temizlerconst onbellek = new Onbellek();onbellek.ayarla('buyuk-veri', { /* 10MB nesne */ });
Sonuç
ES2024 ve son ECMAScript güncellemeleri, JavaScript'i daha güvenli, daha ergonomik ve daha ifade gücü yüksek bir dil haline getiriyor. Object.groupBy, immutable dizi metodları ve Promise.withResolvers günlük kodunuzu hem kısaltır hem de orijinal verilerini korur. Temporal API ise Date'in onlarca yıllık karmaşasını sonlandırmaya aday.