Menu

TypeScript 7: Yerel Derleyici, Değişenler ve Yükseltme

TypeScript 7, Go ile yerel bir program olarak yeniden yazılmış TypeScript derleyicisidir: yaklaşık on kat daha hızlı, aynı tsc komutu ve aynı dil. Kullanıcılar için değişenler (yeni varsayılanlar, kaldırılan seçenekler, eksik JavaScript API'si), hâlâ TypeScript 6 gerektiren araçlar ve nasıl yükseltileceği.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

TypeScript 7, Go ile yeniden yazılıp yerel bir program olarak dağıtılan TypeScript derleyicisidir. Dil aynıdır, komut hâlâ tsc, npm paketi de hâlâ typescript; değişenler hız (tam derlemeler yaklaşık on kat daha hızlı), bir dizi yeni varsayılan ve TypeScript 6'nın kullanımdan kaldırdığı seçeneklerin silinmesidir. TypeScript 7.0, 8 Temmuz 2026'da yayınlandı ve npm'deki sürüm 7.0.2'dir.

npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2

Tip düzeyinde görebileceğiniz az sayıdaki farktan biri, template literal tiplerin string'leri nasıl böldüğüdür. JavaScript string'leri UTF-16 kod birimleri olarak saklar ve 😀 gibi bir emoji bunlardan ikisini kaplar:

TypeScript 6 template literal tipleri text[0] gibi kod birimlerine göre bölerdi. TypeScript 7 ise [...text] gibi kod noktalarına göre böler, bu yüzden emoji bütün kalır:

type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;

type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]

TypeScript Neden Go ile Yeniden Yazıldı

  1. sürüme kadar TypeScript derleyicisinin kendisi TypeScript ile yazılmıştı ve Node.js üzerinde çalışıyordu. Büyük kod tabanlarında bu; yavaş derlemeler, yavaş editör açılışı ve yüksek bellek kullanımı demekti.

Anders Hejlsberg yerel taşımayı 11 Mart 2025'te "A 10x Faster TypeScript" başlıklı bir yazıyla duyurdu. Yeni kod tabanının kod adı Corsa, JavaScript olanınki ise Strada'ydı. Ekip tip denetleyicisini yeniden tasarlamak yerine mevcut derleyicinin kodunu taşıdı; bu yüzden yeni derleyici aynı kuralları izler ve aynı hataları bildirir. TypeScript 6.0 (Mart 2026) JavaScript kod tabanının son sürümüydü ve bir köprü görevi gördü: TypeScript 7'nin kaldıracağı her şeyi kullanımdan kaldırdı. TypeScript 7.0 ardından 8 Temmuz 2026'da geldi.

TypeScript 7 Ne Kadar Hızlı

7.0 sürümüyle yayınlanan, açık kaynak projelerin tam derleme süreleri:

ProjeTypeScript 6TypeScript 7HızlanmaBellek
VS Code125.7 s10.6 s11.9x5.2 GB'den 4.2 GB'ye
Sentry139.8 s15.7 s8.9x4.9 GB'den 4.6 GB'ye
Bluesky24.3 s2.8 s8.7x1.8 GB'den 1.3 GB'ye
Playwright12.8 s1.47 s8.7x1.0 GB'den 0.9 GB'ye
tldraw11.2 s1.46 s7.7x0.6 GB'den 0.5 GB'ye

Bu çalıştırmalar varsayılan 4 tip kontrol işçisini kullandı. Aynı makinede --checkers 8 ile VS Code derlemesi 7.51 s (16.7x), tldraw ise 1.06 s (10.6x) sürdü; bedeli daha fazla bellek kullanımıydı.

Editör de aynı ölçüde kazanıyor. Language service artık yerel bir language server olarak çalışıyor: VS Code kod tabanında, editörü açmaktan bir dosyadaki ilk hatayı görmeye kadar geçen süre yaklaşık 17.5 saniyeden 1.3 saniyenin altına indi. Hızlanma en çok monorepo'larda, CI hatlarında ve büyük kod tabanlarındaki editörlerde fark yaratıyor.

Aynı Kalanlar

  • Komut ve paket. npm install --save-dev typescript ve npx tsc. Kurulumda npm, @typescript/typescript-linux-x64 gibi opsiyonel bağımlılıklardan platformunuz için önceden derlenmiş bir binary seçer; ayarlanacak başka bir şey yoktur.
  • Dil. Aynı sözdizimi, aynı tip sistemi, aynı hata kodları.
  • Sonuçlar. Sürüm notlarına göre, stableTypeOrdering bayrağı açıkken ve hiçbir ignoreDeprecations ayarı olmadan TypeScript 6.0 ile temiz derlenen hemen her kod, TypeScript 7.0'da da aynı şekilde derlenmelidir.

Yeni Varsayılanlar

TypeScript 6.0 bu varsayılanları değiştirdi ve TypeScript 7 onları koruyor. Yalnızca tsconfig.json dosyanızın ayarlamadığı seçenekler için önemlidirler:

SeçenekYeni varsayılanEskisine güveniyorsanız etkisi
stricttruestrict ayarlamamış projeler artık strict null kontrollerini, noImplicitAny ve diğerlerini alır
targetes2025, esnext öncesindeki en yeni sürümDaha eski bir hedef ayarlamadıkça çıktı modern sözdizimini korur
moduleesnextnodenext veya commonjs ayarlamadıkça ES modülü çıktısı
types[]Kurulu @types paketleri artık otomatik yüklenmez: "types": ["node"] ekleyin (["*"] eski davranışı geri getirir)
rootDir./, tsconfig.json dosyasını içeren klasöroutDir ayarlıyken ve kaynaklar src içindeyken, "rootDir": "./src" ayarlayana kadar error TS5011
noUncheckedSideEffectImportstrueimport "./styles.css" gibi bir yan etki import'u bir modül bildirimi (declare module "*.css";) ister; framework tip paketleri bunu genellikle sağlar
stableTypeOrderingHer zaman açık, kapatılamazTipler her çalıştırmada aynı şekilde sıralanır, böylece hata mesajları ve .d.ts çıktısı kontrol sırasına bağlı olmaz

Kaldırılan Seçenekler ve Sözdizimi

TypeScript 6'da kullanımdan kaldırılan seçenekler TypeScript 7'de hatadır:

  • target: es5 ve yalnızca ES5 çıktısı için var olan downlevelIteration.
  • moduleResolution: node (node10 olarak da bilinir) ve classic. nodenext veya bundler kullanın.
  • module: amd, umd, system ve none.
  • baseUrl (paths girdilerini tsconfig dosyasına göre yazın) ve outFile (bir bundler kullanın).
  • esModuleInterop: false, allowSyntheticDefaultImports: false ve alwaysStrict: false; üçü de her zaman açıktır.

Derleyici neyin silineceğini tam olarak söyler:

error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.

İki eski sözdizimi biçimi de artık hatadır: bir namespace için module Foo { } (namespace Foo { } yazın; bir paket için declare module "foo" bundan etkilenmez) ve import assertion'lar (assert { type: "json" } ifadesi with { type: "json" } olur).

index.ts(2,8): error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.
  1. satırdaki module kelimesini namespace yapmak hatayı düzeltir ve program 4 yazdırır.

Komut satırında, tsconfig.json bulunan bir klasörde tsc file.ts artık yapılandırmayı sessizce yok saymak yerine error TS5112 ile durur. Yalnızca tsc çalıştırın ya da --ignoreConfig verin. JSDoc ile kontrol edilen JavaScript dosyalarında TypeScript 7 tipleri daha çok TypeScript'in yaptığı gibi okur: @enum artık tanınmaz ve tip olarak kullanılan bir değer typeof ister. Kaldırılan her seçeneğin yerine ne kullanılacağını tsconfig sayfası gösteriyor.

Hâlâ TypeScript 6 Gerektiren Araçlar

TypeScript 7.0 kararlı bir JavaScript API'si içermez. require("typescript") yalnızca sürüm bilgisini (version ve versionMajorMinor) döndürür; diğer araçların çağırdığı derleyici fonksiyonları (createProgram, language service) yoktur. Paketin typescript/unstable/* giriş noktaları deneyseldir ve bir alternatif değildir. Sürüm notlarına göre ekip, TypeScript 7.1'in yeni ve farklı bir API ile gelmesini bekliyor. O zamana kadar derleyiciyi kütüphane olarak import eden her şey TypeScript 6'yı kullanmaya devam eder:

  • typescript-eslint (tip farkındalıklı lint kuralları)
  • Vue, Svelte ve Astro dosyaları için dil araçları, Angular'ın şablon tip kontrolü ve MDX
  • TypeScript 7 kuruluyken başlangıçta çöken ts-node

Bunlar için TypeScript bir uyumluluk paketi sunar: @typescript/typescript6, TypeScript 6'yı tam API'si ve bir tsc6 komutuyla kurar. npm alias'ları sayesinde tek bir projede ikisi birden olabilir: derlemeleri TypeScript 7 yapar, typescript import eden araçlar ise 6. sürümü alır.

{
    "devDependencies": {
        "@typescript/native": "npm:typescript@^7.0.2",
        "typescript": "npm:@typescript/typescript6@^6.0.2"
    }
}

npm install sonrasında:

$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3

Bu araçlardan hiçbirini kullanmıyorsanız düz typescript kurun ve bu kısmı atlayın.

Yeni Komut Satırı Seçenekleri

Yerel derleyici ayrıştırma, kontrol ve çıktı üretimini paralel yapar. Bunu üç yeni bayrak kontrol eder; sürüm notları --checkers ve --builders bayraklarını deneysel olarak nitelendiriyor:

BayrakNe yapar
--checkers NProje başına tip kontrol işçisi sayısı (varsayılan 4). Çok çekirdekli makinelerde daha fazlası yardımcı olabilir ve bellek harcar; küçük CI makinelerine daha azı uygundur.
--builders NProject references ile yapılan bir --build içinde aynı anda derlenen proje sayısı. --checkers ile çarpılır: 4 checker ile 4 builder aynı anda 16 checker çalıştırabilir.
--singleThreadedHata ayıklama veya sıkı bellek sınırları için tüm paralelliği kapatır.

--watch da Parcel bundler'ının dosya izleyicisinin Go'ya taşınmış hali üzerine yeniden yazıldı.

Editör Desteği

VS Code için TypeScript ekibi ayrı bir TypeScript 7 eklentisi yayınlıyor; kurulduğunda varsayılan olur ve komut paletindeki "Disable TypeScript 7 Language Server" TypeScript 6'ya geri döner. En güncel Visual Studio, çalışma alanına göre TypeScript 7'yi otomatik olarak etkinleştirir; diğer editörler (Neovim, Zed, Sublime Text, Emacs) ona Language Server Protocol üzerinden bağlanır. Vue, Svelte, Astro veya MDX dosyaları ya da Angular şablonları kullanan projeler, TypeScript 7 bu araçların kullanabileceği bir API sunana kadar TypeScript 6 tabanlı editör desteğini korur. Bir Angular projesi yine de hızlı tüm proje kontrolleri için TypeScript 7'nin tsc komutunu çalıştırabilir.

TypeScript 7'ye Nasıl Yükseltilir

  1. Önce TypeScript 6'ya yükseltin, 5.x kullanıyorsanız: npm install --save-dev typescript@6. Bildirdiği her kullanımdan kaldırma hatasını "ignoreDeprecations": "6.0" ile susturmak yerine düzeltin.
  2. TypeScript 6 altında "stableTypeOrdering": true açın ve değiştirdiği her şeyi düzeltin. Ekibin 7'de aynı şekilde derlendiğini belirttiği yapılandırma budur.
  3. Varsayılanı değişen seçenekleri ayarlayın, eski değerlere bağlıysanız; örneğin "types": ["node"] ve "rootDir": "./src".
  4. TypeScript 7'yi kurun: npm install --save-dev typescript@latest. İsterseniz sonrasında stableTypeOrdering satırını silin; 7'de her zaman açıktır.
  5. Araçlarınızı kontrol edin. typescript-eslint, ts-node veya şablon tip kontrolü olan bir framework kullanıyorsanız yukarıda gösterilen TypeScript 6 alias'ını kurun.
  6. Sürümü doğrulayın: npx tsc --version ile; CI'ın güncellenmiş lock dosyasından kurulum yaptığından emin olun.

tsgo ve Önizleme Derlemeleri

Sürümden önce yerel derleyici, JavaScript tsc komutunun yanında denenebilmesi için komutu tsgo olan @typescript/native-preview adıyla yayınlanıyordu. 2025 ve 2026 başındaki yazılar tsgo adını kullanır. 7.0 ile bu ad günlük kullanımdan kalktı: yerel derleyici tsc komutudur ve nightly derlemeleri typescript@next olarak yayınlanır (bugün 7.1 geliştirme sürümleri).

Sıkça Sorulan Sorular

TypeScript 7 nedir?

TypeScript 7, Node.js üzerinde JavaScript olarak çalışmak yerine Go ile yeniden yazılıp yerel bir programa derlenen TypeScript derleyicisinin ilk sürümüdür. Aynı dili aynı tsc komutuyla kontrol eder ve sürüm notlarına göre tam derlemeler TypeScript 6'ya göre genellikle 8 ile 12 kat daha hızlıdır. 8 Temmuz 2026'da yayınlandı.

TypeScript 7 Go ile mi yazıldı?

Evet. Derleyici ve language service TypeScript'ten Go'ya taşındı (projenin kod adı Corsa, JavaScript kod tabanınınki ise Strada'ydı). Onu hâlâ npm'den typescript paketi olarak kurarsınız; npm işletim sisteminiz ve işlemciniz için önceden derlenmiş yerel bir binary seçer.

TypeScript 7 için kodumu değiştirmem gerekir mi?

Kodu genellikle hayır, yapılandırmayı bazen. TypeScript 7, 6.0'ın kullanımdan kaldırdığı seçenekleri (target: es5, moduleResolution: node, baseUrl, outFile ve diğerleri) siler ve strict: true ile types: [] gibi varsayılanları değiştirir. TypeScript 6.0 ile stableTypeOrdering açıkken ve ignoreDeprecations olmadan temiz derlenen kod aynı şekilde derlenmelidir.

tsgo nedir?

tsgo, yerel derleyicinin 7.0 sürümünden önce @typescript/native-preview npm paketi olarak yayınlanan önizleme derlemelerinin komut adıydı. TypeScript 7'de yerel derleyici basitçe typescript paketindeki tsc komutudur; nightly derlemeler de typescript@next üzerinden gelir.

typescript-eslint TypeScript 7 ile çalışır mı?

Doğrudan değil. TypeScript 7.0 kararlı bir JavaScript API'si içermez; typescript-eslint, ts-node ve Vue, Svelte ile Angular şablon denetleyicileri gibi araçlar bu API'yi çağırır. Onlar için @typescript/typescript6 paketi (bir npm alias'ı) üzerinden TypeScript 6'yı kurulu tutun ve derlemeler için TypeScript 7'nin tsc komutunu kullanın. TypeScript ekibi, TypeScript 7.1'in yeni ve farklı bir API ile gelmesini bekliyor.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA