TypeScript 7 Aralık 2025: Native Port Nerede?
TypeScript ekibi, derleyici ve dil servisini native koda taşıma çalışmasında (kod adı “Project Corsa”, resmi adıyla TypeScript 7.0) önemli bir eşiği aştığını duyurdu. Aralık 2025 güncellemesine göre yeni araç zinciri günlük kullanım için hazır sayılabilecek düzeyde stabil ve 6.0 sonrasında JavaScript tabanlı kod tabanında geliştirme duracak. Bu yazıda editör deneyimi, derleyici performansı, 5.9’dan farklar ve yol haritası açısından paylaşılan bilgiler derli toplu bir arada.
Editör desteği ve language service
Yeni TypeScript language service, editör tarafındaki TypeScript ve JavaScript özelliklerini besleyen bileşen olarak native port sürecinin merkezinde. Visual Studio Code Marketplace üzerinden yayımlanan native önizleme uzantısı her gün güncelleniyor ve mevcut editör deneyiminin büyük bölümünü karşılıyor.
Şu an çalışır durumda olduğu belirtilen özellikler:
- Kod tamamlama (auto-import dahil)
- Go-to-Definition, Go-to-Type-Definition, Go-to-Implementation
- Find-All-References ve Rename
- Quick Info / hover ipuçları ve signature help
- Formatlama, seçim aralıkları, Code Lens
- Call Hierarchy, Document Symbols
- Eksik import’lar için Quick Fix
Önceki güncellemelerde eksik olan auto-import, find-all-references ve rename gibi özellikler yeniden yazılıp günlük kullanıma uygun hale gelmiş. Bu işlemler, project references kullanan projeler dahil tüm TypeScript ve JavaScript kod tabanlarında çalışıyor.
Language service mimarisi, güvenilirliği artırmak ve paylaşımlı bellek üzerinden paralellikten yararlanmak amacıyla yeniden düzenlenmiş. Ekip, eski deneyimin bazı ekiplerce “zaman zaman çöken” bir yapı olarak tanımlandığını, yeni mimarinin ise hem küçük hem büyük kod tabanlarında daha dayanıklı çalıştığını ifade ediyor. Uzantı, VS Code’un yerleşik TypeScript deneyimi ile yeni native önizleme arasında geçiş yapmayı da kolaylaştırıyor.
Derleyici: tsgo ve tür kontrolünde yakınsama
Yeni derleyici, @typescript/native-preview paket adıyla npm üzerinden nightly olarak yayımlanıyor. Kurulum şöyle yapılıyor:
# yerel geliştirme bağımlılığı
npm install -D @typescript/native-preview
# global kurulum
npm install -g @typescript/native-preview
Paket, mevcut tsc komutuna benzer şekilde çalışan bir tsgo komutu sağlıyor; iki derleyici yan yana kullanılabiliyor.
“TypeScript 7’yi build doğrulaması için kullanmak güvenli mi?” sorusuna ekip net bir “evet” yanıtı veriyor. Paylaşılan rakamlara göre yaklaşık 20.000 derleyici test senaryosu var, bunların yaklaşık 6.000’i TypeScript 6.0’da en az bir hata üretiyor. TypeScript 7 ise bu senaryoların 74 tanesi dışında hepsinde aynı şekilde en az bir hata üretiyor. Kalan 74 senaryonun tamamı ya bilinen tamamlanmamış işlerle (örneğin regex sözdizim kontrolü veya isolatedDeclarations hataları) ya da bilinçli değişikliklerle (kaldırılan davranışlar, varsayılan ayar değişiklikleri vb.) ilgili.
Komut satırı derleyicisi de tek geçişli tür kontrolünün ötesinde önemli bir olgunluğa ulaşmış. --incremental, project reference desteği ve --build modu artık port edilmiş ve çalışır durumda:
# tsc'yi --build modunda çalıştırma
tsc -b some.tsconfig.json --extendedDiagnostics
# yeni derleyiciyi --build modunda çalıştırma
tsgo -b some.tsconfig.json --extendedDiagnostics
Performans tablosu
Ekibin paylaştığı tabloya göre TypeScript 7, tam build senaryolarında bile 6.0 derleyicisine kıyasla 10x’e yaklaşan hızlanmalar sağlıyor. Native kod performansına ek olarak, paylaşımlı bellek üzerinden paralellik sayesinde hem tek proje içinde çok iş parçacıklı build hem de birden fazla projeyi paralel derleme mümkün.
| Proje | tsc (6.0) | tsgo (7.0) | Fark | Hızlanma |
|---|---|---|---|---|
| sentry | 133.08s | 16.25s | 116.84s | 8.19x |
| vscode | 89.11s | 8.74s | 80.37s | 10.2x |
| typeorm | 15.80s | 1.06s | 14.20s | 9.88x |
| playwright | 9.30s | 1.24s | 8.07s | 7.51x |
--incremental ile birleştiğinde, büyük projelerdeki küçük değişiklikler için build sürelerinin neredeyse anlık hissedilecek noktaya yaklaştığı ifade ediliyor.
TypeScript 5.9’dan beklenen farklar
Yeni derleyiciye geçerken dikkat edilmesi gereken bazı farklar var. Bir kısmı geçici, bir kısmı ise varsayılan TypeScript deneyimini iyileştirmeye yönelik uzun vadeli kararlardan kaynaklanıyor.
Deprecation ve 6.0 uyumu
TypeScript 7.0, 6.0’da deprecate edilmesi planlanan davranış ve bayrakları kaldıracak. Planlanmış değişikliklerden öne çıkanlar:
--strictvarsayılan olarak açık olacak.--targetvarsayılanı en güncel kararlı ECMAScript hedefine (örneğines2025) çekilecek.--target es5kaldırılacak; desteklenen en düşük hedefes2015olacak.--baseUrlkaldırılacak.--moduleResolution node10(yaninode) kaldırılacak; yerinebundlervenodenextönerilecek.rootDirvarsayılanı çalışılan dizin olacak;outDirkullanımı ya açık birrootDirtanımı ya da üst düzey kaynak dosyalarıntsconfig.jsonile aynı dizinde olmasını gerektirecek.
Bu liste kapsayıcı değil; güncel durum için ekibin issue tracker’ındaki 6.0 breaking change etiketli konular referans alınmalı. Ekip ayrıca tsconfig.json dosyalarını otomatik güncellemeye yardımcı olacak ts5to6 adlı bir aracı deniyor. Şimdilik yalnızca baseUrl ve rootDir ayarlarını güncelleyebiliyor:
npx @andrewbranch/ts5to6 --fixBaseUrl your-tsconfig-file-here.json
npx @andrewbranch/ts5to6 --fixRootDir your-tsconfig-file-here.json
Araç, extends ve references ilişkileri üzerinden sezgisel çıkarımlar yaparak kod tabanındaki diğer projeleri de güncellemeye çalışıyor.
Emit, –watch ve API tarafı
6.0 uyumluluğu yüksek olsa da yeni derleyicinin hemen devreye alınamayacağı bazı senaryolar var. Öne çıkan noktalar:
- JavaScript emit hattı henüz tamamen bitmiş değil. Babel, esbuild gibi araçlar kullanılıyorsa veya modern hedeflere derleme yapılıyorsa
tsgoile build sorunsuz çalışıyor. Ancak downlevel derleme desteği şu an gerçekçi olarak yalnızcaes2021hedefine kadar iniyor ve decorator derlemesi desteklenmiyor.es2015‘e kadar tam--targetdesteği için çalışmalar sürüyor. - –watch modu bazı senaryolarda mevcut derleyiciye göre daha az verimli olabiliyor. Bu durumda
nodemoniletsgo‘yu--incrementalbayrağı ile birlikte kullanmak gibi alternatifler öneriliyor. - Mevcut Strada API’si TypeScript 7.0 tarafında desteklenmeyecek. Corsa API’si hala üzerinde çalışılıyor ve kararlı bir entegrasyon henüz yok. Yani Strada API’sine bağımlı linter, formatter veya IDE eklentileri Corsa ile çalışmayacak.
Ekibin önerdiği geçici çözüm şu: typescript ve @typescript/native-preview paketlerini yan yana kurup, ≤6.0 API’sini gerektiren araçları eski paket üzerinden çalıştırmak, tür kontrolünü ise tsgo ile yapmak.
JavaScript ve JSDoc uyumluluğu
JavaScript üzerinde tür denetimi (JSDoc anotasyonlarıyla birlikte) sıfırdan yeniden yazılmış. İç yapıyı sadeleştirmek adına daha karmaşık ve az kullanılan bazı desenlerin desteği kaldırılmış. Örneğin TypeScript 7.0:
@enumve@constructoretiketlerini tanımıyor.- JavaScript’teki bazı “gevşek” tür kontrol kurallarını uygulamıyor; örneğin
Object‘iany,String‘istringolarak yorumlamıyor. - TypeScript dosyasında geçerli olacağı durumda
Foo‘yutypeof Foogibi ele almıyor. any,unknownveundefinedtipli tüm parametreleri otomatik olarak opsiyonel saymıyor.
Bu değişiklikler bazı JavaScript kod tabanlarında önceden görülmeyen hataların ortaya çıkmasına neden olabilir. Öte yandan yeni uygulamanın daha bakımı kolay ve TypeScript’in kendi tip sözdizimi ile daha uyumlu olduğu vurgulanıyor. Eksik ya da hatalı görünen davranışlar için GitHub deposuna issue açılması öneriliyor.
TypeScript 6.0 son JavaScript tabanlı sürüm
Yol haritasındaki en dikkat çekici karar şu: TypeScript 6.0, mevcut JavaScript tabanlı kod tabanı üzerine kurulu son sürüm olacak. Ekip, 6.1 gibi bir sürüm çıkarmayı planlamıyor; yalnızca nadir durumlarda 6.0.1, 6.0.2 gibi patch sürümleri gündeme gelebilir.
6.0, 5.9 ile 7.0 arasında bir “köprü” sürüm olarak konumlanıyor. 7.0 ile uyum için bazı özellikleri deprecate edecek ve tür kontrolü davranışı açısından oldukça uyumlu olacak. Editör tarafında Strada’ya özgü işlevselliğe (örneğin language service eklentileri) ihtiyaç duyan kod tabanları editör için 6.0’ı, hızlı komut satırı build’leri için 7.0’ı kullanabilecek. Tersi de mümkün: editör tarafında hız için 7.0, TypeScript 6.0 API’sine bağımlı komut satırı araçları için 6.0.
6.0 sonrası servis yalnızca patch sürümleri şeklinde olacak ve şu durumlarda çıkarılacak:
- güvenlik sorunları,
- 5.9’da bulunmayan yüksek etkili regresyonlar,
- 6.0/7.0 uyumluluğuyla ilgili yüksek etkili düzeltmeler.
Ekip, 6.0 hattına hangi PR’ların merge edileceği konusunda çok yüksek bir çıta belirlediğini ve odağın 7.0’ı tamamlamaya kaydığını belirtiyor. Bu durum katkı sağlayanlar için önemli: 6.0’a merge şansı düşük PR’lar için beklentilerin buna göre şekillenmesi gerekiyor.
Language service issue’larında “reset”
Çekirdek tür kontrolü kodunun büyük kısmı davranışsal olarak birebir taşınırken language service için durum farklı. Yeni mimaride tamamlama, hover, gezinme gibi işlevlerin arkasındaki kodun büyük bölümü yeniden yazılmış. Ayrıca TypeScript 7.0, özel TSServer protokolü yerine standart LSP protokolünü kullanıyor; bu da VS Code TypeScript uzantısına özgü bazı davranışların değişmiş olabileceği anlamına geliyor.
Bu nedenle language service davranışına özgü mevcut bug ve önerilerin büyük bölümü ya 7.0’da yeniden üretilemeyecek ya da konuşmanın sıfırdan başlaması gerekecek. Ekip, bu tür issue’ları manuel doğrulamanın çok zaman aldığını belirterek ilgili mevcut issue’ları kapatacağını duyuruyor. “7.0 LS Migration” etiketiyle kapatılan bir konuyla karşılaşıldığında, native nightly uzantıda tekrar üretilebildiği doğrulandıktan sonra yeni bir issue açılması isteniyor. Henüz 7.0’a taşınmamış bir işlev için ise ilgili özellik ortaya çıkana kadar beklenmesi öneriliyor.
Kimler şimdi denemeli?
Aralık 2025 tablosuna göre native önizleme şu durumlar için bugün ciddi anlamda deneme değeri sunuyor:
- Tür kontrolünü daha hızlı çalıştırmak isteyen büyük kod tabanları.
--incremental, project references ve--buildkullanan çok projeli kurgular.- JavaScript emit sorumluluğu Babel, esbuild veya benzeri araçlarda olan projeler.
- Modern hedeflere (yaklaşık
es2021ve üzeri) derleme yapan uygulamalar.
Buna karşılık es2015–es2020 arası hedefe downlevel derleme gerektiren, decorator emit’ine bağımlı olan veya Strada API’si üzerinden çalışan geliştirici araç zincirlerine sahip projelerin geçişi biraz daha zamana ihtiyaç duyacak.
Kaynaklar ve İleri Okuma
- Progress on TypeScript 7 – December 2025 (orijinal yazı)
- TypeScript Native Port duyurusu
- VS Code için Native Preview uzantısı
- @typescript/native-preview npm paketi
- TypeScript 6.0 Breaking Change issue listesi
- ts5to6 tsconfig güncelleme aracı
- nodemon npm paketi
- TypeScript 6.0 Beta: 7.0’a Geçiş Köprüsü







2 comments