ES17 nedir? ECMAScript 2026 nedir?

Sayfayı kopyala
ECMAscript, kısa adıyla ES, Ecma-International tarafından ECMA-262 dokümanında yayınlanan ve her yıl yenilenen JavaScript standardıdır. Bu yazıda, bu satırların yazıldığı Haziran 2026 itibarıyla son aşamada olan ve yayınlanması beklenen ECMAScript 2026 (ES17) sürümüyle gelen/gelmesi beklenen yenilikleri inceliyoruz.
ES17 (ECMAScript 2026), 2026 yılında yayınlanması beklenen 17. ECMAScript sürümüdür.
ES17 ile gelen yenilikler ve adaylar
ES17 standardı için kesinleşen (Stage 4) ve resmi olarak kabul edilmesi beklenen temel özellikler şunlar;
Math.sumPrecise()(Hassas ondalık sayı toplama)Error.isError()(Güvenli Error tipi kontrolü)Array.fromAsync()(Asenkron yineleyicilerden dizi oluşturma)- Explicit Resource Management (
usingveawait usingile otomatik kaynak temizliği) - Aday Aşamasındaki Özellikler:
TemporalAPI veDecorators(Süreçleri devam eden büyük yenilikler)
Math.sumPrecise()
JavaScript'te meşhur 0.1 + 0.2 toplamasının 0.30000000000000004 dönmesi, kayan noktalı sayıların (floating-point) saklanma biçiminden kaynaklanan kronik bir sorundur. ES17 ile dile eklenen Math.sumPrecise() metodu, bir sayı dizisindeki tüm elemanları kayan nokta hassasiyet kayıpları yaşamadan tam olarak toplar.
const floatNumbers = [0.1, 0.2];
// Klasik toplama (Hatalı)
console.log(floatNumbers[0] + floatNumbers[1]); // 0.30000000000000004
// ES17 Math.sumPrecise() (Tam doğru sonuç)
console.log(Math.sumPrecise(floatNumbers)); // 0.3
Error.isError()
Geleneksel olarak bir nesnenin gerçekten bir Error örneği (instance) olup olmadığını kontrol etmek için instanceof Error kullanıyorduk. Ancak iframe'ler, farklı pencere bağlamları (window contexts) veya cross-realm ortamlarda bu kontrol güvenilmez hale geliyordu. Error.isError() metodu, cross-realm dahil her ortamda nesnenin geçerli bir hata nesnesi olup olmadığını güvenle test etmeyi sağlar.
const myError = new TypeError("Bir hata oluştu");
const normalObject = { message: "Bir hata oluştu" };
console.log(Error.isError(myError)); // true
console.log(Error.isError(normalObject)); // false
Array.fromAsync()
Asenkron veri akışlarından (readable streams veya async generators) gelen verileri diziye dönüştürmek için manuel döngüler yazmak gerekiyordu. Array.fromAsync() asenkron yineleyici (async iterable) üzerinden tüm elemanları okuyarak asenkron olarak bir dizi oluşturur ve bu diziyi döner.
// Örnek bir asenkron generator
async function* getPrices() {
yield 100;
yield 200;
yield 300;
}
// Asenkron elemanları toplayarak dizi oluşturuyoruz
const prices = await Array.fromAsync(getPrices());
console.log(prices); // [100, 200, 300]
Explicit Resource Management (using ve await using)
Diğer dillerden (C# using, Python with) aşina olduğumuz bu özellik, açılan veritabanı bağlantıları, dosya handle'ları gibi kaynakların işlemler bittiğinde otomatik olarak kapatılmasını/temizlenmesini sağlar. using anahtar kelimesiyle tanımlanan nesneler kapsamdan (scope) çıktığı anda yerleşik Symbol.dispose metodu otomatik çağrılır.
// Kaynak nesnesi tanımı
const resource = {
[Symbol.dispose]() {
console.log("Kaynak otomatik olarak kapatıldı ve temizlendi!");
}
};
{
// using ile tanımlanan kaynak blok bittiğinde otomatik temizlenecektir
using myRes = resource;
console.log("Kaynak kullanılıyor...");
}
// Çıktı:
// "Kaynak kullanılıyor..."
// "Kaynak otomatik olarak kapatıldı ve temizlendi!"
Aday Aşamasındaki Büyük Özellikler (Stage 3)
ES17 sürümü yayınlanırken henüz kesinleşmemiş (Stage 4 olmamış) fakat topluluk tarafından heyecanla beklenen bazı aday özellikler de bulunuyor:
- Temporal API: JavaScript'in 1995'ten beri var olan ve kronik olarak hatalı kabul edilen
Datenesnesini tamamen emekliye ayıracak olan modern tarih ve saat kütüphanesidir. Zaman dilimleri, takvimler ve süre hesaplamalarını yerleşik olarak hatasız yönetmeyi hedefler. - Decorators: Sınıf tanımlarını, metotları veya özellikleri sarmalayarak davranışlarını değiştirmeyi veya genişletmeyi sağlayan (TypeScript ve Angular dünyasında uzun yıllardır kullanılan) dekoratörlerin JavaScript'e resmi olarak eklenmesi sürecidir.
Bu Yazıda Yapılan Değişiklikler
- 20.06.2026: Yazı oluşturuldu. ES2026 (ES17) kesinleşen özellikleri (
Math.sumPrecise,Error.isError,Array.fromAsync,using) detaylandırıldı. Temporal ve Decorators adaylarının son durumları eklendi.
