TypeScript 6.0 Beta Duyuruldu: Neler Değişiyor?

Paylaş:
TypeScript 6.0 Beta Duyuruldu: Neler Değişiyor?

Microsoft, TypeScript 6.0 Beta sürümünü duyurdu. Bu sürüm, yalnızca yeni özellikler getiren bir güncelleme değil; aynı zamanda TypeScript 7.0'a geçiş için bir "köprü sürüm" olarak konumlanıyor.

Ekip, 7.0 ile birlikte derleyici ve dil servisinin Go tabanlı yeni bir mimariye taşınacağını daha önce açıklamıştı. 6.0 Beta da bu geçişin ön hazırlıklarını içeriyor.

Beta sürümünü denemek için:

bash
npm install -D typescript@beta

Öne çıkan yenilikler

1) this kullanmayan fonksiyonlarda daha az bağlamsal hassasiyet

Önceki sürümlerde bazı method sözdizimi örneklerinde tip çıkarımı, property sırasına göre beklenmedik şekilde kırılabiliyordu. TypeScript 6.0, fonksiyon içinde this gerçekten kullanılmıyorsa bu fonksiyonu daha iyi ele alıyor ve tip çıkarımını daha tutarlı hale getiriyor.

Pratik sonuç: object literal içindeki method sırası yüzünden ortaya çıkan gereksiz unknown hataları daha az görülecek.

2) #/ ile başlayan subpath import desteği

Node.js'in yeni sürümlerindeki gelişmeyle paralel olarak TypeScript artık #/ tabanlı import eşlemelerini destekliyor.

Bu destek özellikle şu moduleResolution seçeneklerinde geçerli:

  • node20
  • nodenext
  • bundler

Bu sayede bundler dünyasındaki kısa alias kullanımına daha yakın bir yazım mümkün oluyor.

3) --moduleResolution bundler + --module commonjs birlikte kullanılabiliyor

Önceden bu kombinasyon sınırlıydı. 6.0 ile birlikte, özellikle eski node/node10 çözümlemesinden modern yapılandırmaya geçmek isteyen projeler için daha esnek bir ara geçiş yolu açılıyor.

4) Yeni bayrak: --stableTypeOrdering

TypeScript 7.0'daki paralel tip denetimiyle birlikte tip sıralamasının deterministik olması kritik hale geliyor. 6.0'a gelen --stableTypeOrdering, tiplerin iç sıralamasını 7.0 davranışına yaklaştırıyor.

Bu sayede:

  • 6.0 ve 7.0 çıktıları karşılaştırılırken oluşan gereksiz farklar azalıyor.
  • Özellikle .d.ts üretimindeki "sıra kaynaklı gürültü" düşüyor.

Not: Bu bayrak bazı projelerde derleme süresini hissedilir şekilde artırabilir.

5) dom kütüphanesi artık dom.iterable ve dom.asynciterable içeriyor

lib: ["dom"] artık çoğu modern tarayıcı senaryosu için yeterli. Önceden ayrıca eklenen dom.iterable veya dom.asynciterable girdileri artık pratikte boş/gereksiz hale geliyor.

TypeScript 6.0'daki önemli kırıcı değişiklikler

6.0, 7.0'a hazırlık amacıyla birçok eski davranışı sadeleştiriyor. En kritik başlıklar:

Varsayılanlarda değişim

  • strict varsayılanı artık true
  • module varsayılanı esnext
  • target varsayılanı güncel ECMAScript sürümü (şu an es2025)
  • noUncheckedSideEffectImports varsayılanı true
  • libReplacement varsayılanı false

rootDir varsayılanı artık proje kökü

rootDir tanımlanmadığında artık tsconfig.json dosyasının bulunduğu klasör esas alınıyor. Önceden common path üzerinden yapılan çıkarım değişti.

Eğer çıktılar dist/src/... gibi beklenmedik klasöre düşüyorsa genelde çözüm:

json
{
  "compilerOptions": {
    "rootDir": "./src"
  }
}

types varsayılanı artık []

Önceden node_modules/@types altında çok sayıda paketin otomatik yüklenmesi mümkündü. 6.0 bunu kapatıp performans için varsayılanı boş diziye çekiyor.

Sık gereken örnek:

json
{
  "compilerOptions": {
    "types": ["node", "jest"]
  }
}

Eski davranışı geri almak istersen:

json
{
  "compilerOptions": {
    "types": ["*"]
  }
}

Deprecated / kaldırma yoluna giren ayarlar

TypeScript 6.0 ile birlikte aşağıdaki ayarlar kullanım dışına çıkıyor veya 7.0'da tamamen kaldırılacak:

  • target: "es5"
  • --downlevelIteration
  • module: "amd" | "umd" | "systemjs"
  • --baseUrl
  • moduleResolution: "classic"
  • esModuleInterop: false
  • allowSyntheticDefaultImports: false
  • alwaysStrict: false
  • outFile
  • namespace yerine kullanılan eski module Foo {} sözdizimi
  • import ... asserts {} sözdizimi (with kullanılmalı)
  • ///

tsconfig.json olan bir klasörde tsc file.ts çalıştırıldığında artık hata üretiliyor. Bu davranışı bilinçli olarak atlamak için:

bash
tsc --ignoreConfig file.ts

Geçiş için pratik kontrol listesi

TypeScript 6.0'a geçen ekipler için kısa bir uygulama planı:

1. tsconfig.json içinde types alanını açıkça tanımlayın. 2. Gerekliyse rootDir değerini netleştirin (./src gibi). 3. baseUrl kullanımını paths içine açık prefix'lerle taşıyın. 4. moduleResolution: classic kullanan projeleri bundler veya nodenexte geçirin. 5. CI pipeline'da tsc çağrılarını gözden geçirin (--ignoreConfig ihtiyacı olup olmadığını kontrol edin). 6. 7.0 karşılaştırması yapacaksanız geçici olarak --stableTypeOrdering deneyin.

TypeScript 7.0'a doğru

TypeScript ekibi 6.0'ı geçiş sürümü olarak tanımlıyor. "ignoreDeprecations": "6.0" ile bazı uyarılar geçici olarak bastırılabiliyor; ancak bu seçenekler 7.0'da tamamen kaldırılacağı için erken uyum sağlamak daha güvenli.

Kısa özetle: 6.0 Beta, yeni özelliklerden çok modern JavaScript gerçekliğine uyum ve performans odaklı sadeleşme getiriyor.

> Kaynak: TypeScript ekibinin resmi "Announcing TypeScript 6.0 Beta" duyurusu (Daniel Rosenwasser).

Makale Bilgileri

Yazar: İsmail Hakkı EREN
Benzer Konudaki Yazılar