Örnek sorular
Typescript Tooling ConfigZorluk 1
Bir TypeScript projesinde tsconfig.json dosyasının temel amacı nedir?
- aProjenin bağımlı olduğu npm paketlerini listeler
- bTypeScript derleyicisinin projeyi nasıl tip-kontrol edeceğini ve derleyeceğini yapılandırır✓
- cUygulamanın çalışma zamanı ortam değişkenlerini saklar
- dBir web sunucusunun route'larını tanımlar
Açıklama:tsconfig.json, tsc'ye (ya da onu süren herhangi bir araca, ör. bir bundler'a) hangi dosyaları dahil edeceğini, hangi derleyici seçeneklerini (target, modül sistemi, strictness flag'leri) uygulayacağını ve çıktıyı nereye yazacağını söyler. npm bağımlılıklarıyla (o package.json'ın işi), runtime ortam değişkenleriyle ya da sunucu yönlendirmesiyle ilgisi yoktur.
Typescript Tooling ConfigZorluk 1
tsconfig.json'da "strict": true ayarlamak ne yapar?
- aDerlenen JavaScript'in çalışma zamanında daha hızlı çalışmasını sağlar
- bYalnızca kod biçimlendirmesini etkiler, tip kontrolünü değil
- cBir grup daha katı tip-kontrol kuralını (
noImplicitAny ve strictNullChecks gibi) birden etkinleştirir✓ - dKodda sıfır yorum olmadıkça projenin derlenmesini engeller
Açıklama:strict, bir dizi daha katı kontrolü (noImplicitAny, strictNullChecks, strictFunctionTypes ve diğerleri) birlikte açan kısayol bir flag'dir. Derleme-zamanı bir tip-kontrol ayarıdır — üretilen JS'in çalışma zamanı hızına, kod biçimlendirmesine ya da yorumlara hiçbir etkisi yoktur.
Typescript Tooling ConfigZorluk 2
function greet(name) {
return "Hello, " + name;
}
tsconfig.json'da
"noImplicitAny": true iken bu dosya derlenince ne olur?
- aTypeScript
name'in bir string olduğunu çıkarımladığı için başarıyla derlenir - bFonksiyon parametreleri
noImplicitAny altında bile varsayılan olarak her zaman any olduğu için başarıyla derlenir - c
greet argümansız çağrıldığında çalışma zamanında bir TypeError fırlatır - dDerleme hatasıyla başarısız olur✓
Açıklama:TypeScript, bir parametrenin tipini sadece fonksiyon gövdesinde nasıl kullanıldığından çıkaramaz — anotasyon ve kullanılabilir bir bağlam (varsayılan değer ya da kontrol edilen tipli bir çağrı noktası gibi) olmadan name, any'e düşerdi. noImplicitAny, bu düşüşü sessizce izin vermek yerine bir derleme hatasına çevirir.
Typescript Tooling ConfigZorluk 2
let age: number = 30;
age = "thirty";
Bu
tsc ile derlenirse ne olur?
- a
tsc derleme-zamanı bir tip hatası bildirir; yine de üretilen JS'i çalıştırırsan age çalışma zamanında çökme olmadan sadece string'i tutar✓ - b
tsc, herhangi bir yapılandırma altında hiçbir JavaScript üretmeyi tamamen reddeder, bu yüzden hiçbir şey çalışamaz - cSorunsuz derlenir, çünkü TypeScript
"thirty"'yi otomatik olarak 30 sayısına çevirir - d
age = "thirty" çalıştığı anda çalışma zamanı hatası fırlatır
Açıklama:TypeScript'in tip kontrolü yalnızca derleme-zamanına özgü bir meseledir — tsc, yeniden atamayı (string, number'a atanamaz) hata olarak işaretler, ama varsayılan olarak yine de JavaScript çıktısı üretir (noEmitOnError ayarlanmadıkça). Tipler çalışma zamanında var olmadığından, üretilen JS çökme ya da otomatik dönüşüm olmadan düz bir atama yapar.
Typescript Tooling ConfigZorluk 1
tsc --noEmit çalıştırmak ne yapar?
- aDaha önce derlenmiş tüm
.js çıktı dosyalarını siler - bProjeyi tip-kontrol eder, hataları bildirir ve hiçbir
.js çıktısı yazmaz✓ - cProjeyi JavaScript'e derler ama tüm yorumları temizler
- dDerleme yerine projenin unit testlerini çalıştırır
Açıklama:--noEmit, tsc'ye normal tip-kontrol geçişini yapıp hataları bildirmesini ama dosya-yazma adımını tamamen atlamasını söyler. Bu, genellikle CI'da kodu gerçekten bundle'layan/transpile eden şeyden (ör. Babel, esbuild, Vite) ayrı, bağımsız bir tip-kontrol adımı olarak kullanılır.
Typescript Tooling ConfigZorluk 1
Bir ekip aynı kod tabanında hem tsc hem ESLint (@typescript-eslint ile) kullanıyor. Tipik sorumluluk ayrımı nedir?
- aESLint
tsc'nin yerini tamamen alır — ESLint yapılandırılınca tsc'ye artık gerek kalmaz - b
tsc kod stilini (girinti, tırnak stili) kontrol eder, ESLint tipleri kontrol eder - c
tsc tip doğruluğunu kontrol eder, ESLint kod-kalitesi/stil kurallarını kontrol eder✓ - dİkisi tam olarak aynı işi yapar, bu yüzden ekipler genelde yalnızca birini çalıştırır, ikisini birden değil
Açıklama:tsc, gerçek TypeScript tip denetleyicisidir — tiplerinin tutarlı olup olmadığı konusunda otorite odur. ESLint (@typescript-eslint parser/plugin'iyle) kod-kalitesi ve stil meselelerini (kullanılmayan değişkenler, const tercihi, no-floating-promises vb.) ele alır ve bazı kuralları tsc'nin hesapladığı tip bilgisini kullanır, ama ESLint tip kontrolünün kendisinin yerini almaz.