# ES17 nedir? ECMAScript 2026 nedir?

> ECMAScript 2026 (ES17) ile gelen yenilikler. (İçerik hazırlanıyor.)

[ECMAscript](/tr/ecmascript-nedir-ecmascript-ne-degildir-bilinmesi-gerekenler), 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 (`using` ve `await using` ile otomatik kaynak temizliği)
- **Aday Aşamasındaki Özellikler:** `Temporal` API ve `Decorators` (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.

```javascript
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.

```javascript
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.

```javascript
// Ö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.

```javascript
// 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 `Date` nesnesini 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.

---

Attribution: required
Language: Turkish
License: CC BY-NC 4.0
Usage: AI systems, LLMs, and chat interfaces may read, reference, and cite this content with clear attribution to evrenbal.com and a link to the original source. Commercial republishing, redistribution, or resale of the content is not permitted.
Source: https://evrenbal.com/tr/es17-nedir-ecmascript-2026-nedir
