- Konu sahibi
- #1
İlk olarak proje klasöründe TypeScript’i geliştirme bağımlılığı olarak kurun, ardından
Önce projenin kök klasöründe bir terminal açın. Klasörde henüz
Ardından temel yapılandırma dosyasını oluşturun:
Bu komut kök klasörde
Proje kökünde
Bu dosyanın çalışması için önce derleme komutunu yürütün:
Hata yoksa
Beklenen çıktı şuna benzer:
Her seferinde uzun komutlar yazmamak için
Bu komutların görevleri farklıdır:
Bu durumda normal
Basit bir proje sonunda klasör yapısı yaklaşık olarak şöyle görünür:
Node.js’in bazı güncel sürümleri yalnızca tür açıklamaları gibi çalışma zamanında silinebilen TypeScript sözdizimini doğrudan çalıştırabilir. Ancak bu yöntem tür denetimi yapmaz ve tüm TypeScript özelliklerini dönüştürmez. Projenin düzenli derleme çıktısına,
tsconfig.json oluşturup kaynak dosyalarınızı src altında .ts uzantısıyla tutun. tsc komutu TypeScript kodunu JavaScript’e derler; Node.js ise çalıştırma sırasında dist klasöründeki JavaScript dosyalarını kullanır. Böylece tür denetimi geliştirme aşamasında yapılır, üretimde çalıştırılan dosyalar Node.js’in doğrudan anlayabildiği JavaScript olur. Modern Node.js projelerinde modül ayarını Node’un çalışma biçimiyle eşleştirmek için nodenext kullanmak uygun başlangıçtır.Mevcut projeyi TypeScript’e hazırlama
Önce projenin kök klasöründe bir terminal açın. Klasörde henüz
package.json yoksa npm init -y komutuyla oluşturun. Daha sonra TypeScript derleyicisini ve Node.js tür tanımlarını geliştirme bağımlılığı olarak yükleyin:
Bash:
npm install --save-dev typescript @types/node
typescript derleyiciyi, @types/node ise process, Buffer, fs ve Node.js’e özgü diğer API’lerin tür bilgilerini sağlar. Projenizde Express gibi başka bir kütüphane kullanıyorsanız, o kütüphanenin ayrı tür paketine ihtiyaç duyup duymadığını ilgili paketin belgelerine göre değerlendirin.Ardından temel yapılandırma dosyasını oluşturun:
Bash:
npx tsc --init
Bu komut kök klasörde
tsconfig.json dosyası üretir. Dosyayı proje yapınıza göre sadeleştirip aşağıdaki hâle getirebilirsiniz:
JSON:
{
"compilerOptions": {
"target": "es2022",
"module": "nodenext",
"moduleResolution": "nodenext",
"rootDir": "src",
"outDir": "dist",
"strict": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"skipLibCheck": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules", "dist"]
}
rootDir, TypeScript kaynaklarının bulunduğu klasörü; outDir ise derlenmiş JavaScript dosyalarının yazılacağı klasörü belirtir. strict: true, tür denetimini daha sıkı yapar. module ve moduleResolution ayarlarını modern Node.js projelerinde birbiriyle uyumlu tutmak önemlidir; nodenext kullanıldığında TypeScript, Node.js’in ESM ve CommonJS kurallarını dikkate alır.İlk TypeScript dosyasını oluşturma
Proje kökünde
src klasörü oluşturun ve içine index.ts dosyası ekleyin. Aşağıdaki örnekte greet fonksiyonu yalnızca metin kabul eder ve yine metin döndürür:
Kod:
type User = {
name: string;
};
function greet(user: User): string {
return `Merhaba, ${user.name}!`;
}
const user: User = { name: "Ayşe" };
console.log(greet(user));
Bu dosyanın çalışması için önce derleme komutunu yürütün:
Bash:
npx tsc
Hata yoksa
dist/index.js dosyası oluşur. Bu, TypeScript’in kaynak dosyayı JavaScript’e çevirdiğini gösterir; ancak tek başına uygulamanın başarıyla çalıştığını kanıtlamaz. Çalışma sonucunu ayrıca Node.js ile kontrol edin:
Bash:
node dist/index.js
Beklenen çıktı şuna benzer:
Kod:
Merhaba, Ayşe!
user nesnesine name yerine sayı verirseniz veya greet fonksiyonuna yanlış türde değer gönderirseniz npx tsc hata bildirir. Bu hata, uygulama çalıştırılmadan önce yakalanan bir tür uyuşmazlığıdır; TypeScript’in çalışma zamanındaki tüm hataları önlediği anlamına gelmez. Örneğin bir API’den gelen verinin gerçekten beklenen biçimde olup olmadığını ayrıca doğrulamanız gerekir.Derleme ve çalıştırma komutlarını package.json’a ekleme
Her seferinde uzun komutlar yazmamak için
package.json içindeki scripts alanını aşağıdaki gibi düzenleyin:
JSON:
{
"scripts": {
"build": "tsc",
"typecheck": "tsc --noEmit",
"start": "node dist/index.js"
}
}
Bu komutların görevleri farklıdır:
npm run build, TypeScript dosyalarınıdistklasörüne JavaScript olarak derler.npm run typecheck, JavaScript üretmeden yalnızca tür denetimi yapar.npm start, daha önce oluşturulmuşdist/index.jsdosyasını Node.js ile çalıştırır.
npm run typecheck, sonra npm run build ve son olarak npm start çalıştırılır. typecheck başarılı olduğu hâlde npm start sırasında hata alırsanız sorun artık temel tür denetiminden çok çalışma zamanı, dosya yolu, ortam değişkeni veya modül uyumluluğu ile ilgilidir.ESM ve CommonJS seçimini doğru yapmak
nodenext kullanırken Node.js’in modül biçimi, package.json içindeki type alanına ve dosya uzantılarına göre belirlenir. Projeyi ESM olarak kullanmak istiyorsanız package.json içine şu alanı ekleyin:
JSON:
{
"type": "module"
}
Bu durumda normal
.ts dosyaları ESM kurallarına göre değerlendirilir. Göreli importlarda Node.js’in beklediği dosya uzantılarını dikkate alın. CommonJS kullanmak istiyorsanız type alanını eklemeyebilir veya proje düzeninizi CommonJS kurallarına göre sürdürebilirsiniz. Karar verirken mevcut kodunuzdaki require/module.exports kullanımı, kullandığınız paketlerin modül biçimi ve dağıtım ortamı birlikte değerlendirilmelidir. module değerini rastgele esnext veya commonjs yapmak yerine Node.js için node16, node18, node20 ya da nodenext seçeneklerinden Node sürümünüz ve proje hedefinizle uyumlu olanı seçin.Yapının son hâli ve kontrol
Basit bir proje sonunda klasör yapısı yaklaşık olarak şöyle görünür:
Kod:
proje/
├─ src/
│ └─ index.ts
├─ dist/
│ └─ index.js
├─ package.json
├─ package-lock.json
└─ tsconfig.json
dist klasörü derleme sonucunda oluşur ve genellikle kaynak kod değildir; bu nedenle sürüm kontrolünde çoğu projede .gitignore içine eklenir. src içindeki .ts dosyaları değiştirdikten sonra npm run typecheck ile tür hatalarını, npm run build ile derlemeyi ve npm start ile gerçek JavaScript çıktısının çalışmasını ayrı ayrı kontrol edin.Node.js’in bazı güncel sürümleri yalnızca tür açıklamaları gibi çalışma zamanında silinebilen TypeScript sözdizimini doğrudan çalıştırabilir. Ancak bu yöntem tür denetimi yapmaz ve tüm TypeScript özelliklerini dönüştürmez. Projenin düzenli derleme çıktısına,
tsconfig.json ayarlarına ve tam tür kontrolüne ihtiyacı varsa tsc ile derleyip oluşan JavaScript’i çalıştırmak daha öngörülebilir yoldur.