« Tüm yayınlar

TypeScript 7.0'da yeşil tsc, güvenli geçiş demek değil

TypeScript 7.0'ın native Go derleyicisi hızlı ama tsc --noEmit iki gerçek riski göremiyor: kaldırılan tsconfig bayrakları ve Compiler API'ye bağımlı araçlar.

TypeScript 7.0, npm üzerinde native Go tabanlı derleyici tsgo ile birlikte yayınlandı ve öncelikle hız vurgusuyla tanıtılıyor. Ancak ekiplerin geçiş güvenliğini ölçmek için kullandığı tsc --noEmit komutu, asıl kırılma noktalarını göremiyor: tip sistemi 6'dan 7'ye büyük ölçüde değişmediği için mevcut kod zaten sorunsuz derleniyor, oysa gerçek riskler başka yerde.

Birinci risk, 5.x serisinde deprecated edilip 7.0'da tamamen kaldırılan tsconfig bayrakları (ör. importsNotUsedAsValues, keyofStringsOnly, ignoreDeprecations). Bunlar artık sessiz uyarı değil, sert hata üretiyor; monorepo'larda tek bir paylaşılan base tsconfig dosyası tüm paketleri aynı anda kırabiliyor. İkinci ve daha sinsi risk ise TypeScript Compiler API'sini doğrudan kullanan araçlar: ts-morph, typedoc, tip-farkında typescript-eslint kuralları, ts-patch/ttypescript ve şema üreticileri gibi araçlar, 7.0'ın ilk sürümünde tam programatik API henüz taşınmadığı için çalışmayı durduruyor — kod hatalı olduğu için değil, API artık orada olmadığı için.

Dekoratör/metadata tabanlı çatılar (NestJS, TypeORM, InversifyJS vb.) için önerilen yaklaşım panik değil doğrulama: build alıp gerçek test paketini ve entegrasyon testlerini çalıştırmak, --noEmit'in göremeyeceği çalışma zamanı davranışını ortaya çıkarıyor. Önerilen sıra şu: önce tsconfig'i kaldırılan bayraklar için tara, sonra Compiler API'ye bağımlı araçları tespit et (gerekirse TypeScript 6.x'i yan yana tut), ardından tsc --noEmit çalıştır, son olarak tam test paketiyle build ve çalışma zamanı doğrulaması yap. --noEmit üçüncü adım olmalı, birinci değil.