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:
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:
node20nodenextbundler
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
strictvarsayılanı artıktruemodulevarsayılanıesnexttargetvarsayılanı güncel ECMAScript sürümü (şu anes2025)noUncheckedSideEffectImportsvarsayılanıtruelibReplacementvarsayı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:
{
"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:
{
"compilerOptions": {
"types": ["node", "jest"]
}
}
Eski davranışı geri almak istersen:
{
"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"--downlevelIterationmodule: "amd" | "umd" | "systemjs"--baseUrlmoduleResolution: "classic"esModuleInterop: falseallowSyntheticDefaultImports: falsealwaysStrict: falseoutFilenamespaceyerine kullanılan eskimodule Foo {}sözdizimiimport ... asserts {}sözdizimi (withkullanı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:
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).



