TypeScript ve tsconfig.json
Bu makale TypeScript ve tsconfig.json'u açıklamaktadır.
TypeScript'in temel rolünden başlayarak, tsconfig.json dosyasının bir projede nasıl işlediğini özel örneklerle açıklayacağız.
YouTube Video
TypeScript ve tsconfig.json
TypeScript, 'tiplerle birlikte JavaScript'tir.'. Ancak, TypeScript'i gerçek projelerde etkili bir şekilde kullanmak için tsconfig.json'u doğru anlamak ve kasıtlı olarak yapılandırmak gereklidir.
Neden TypeScript'e ihtiyacımız var?
Öncelikle TypeScript kullanmanın temel nedeni, hataları çalıştırmadan önce yakalama yeteneğidir..
1function add(a: number, b: number): number {
2 return a + b;
3}
4
5add(1, "2");Bu kod JavaScript'te ancak çalışma zamanında hata verirken, TypeScript'te derleme zamanında tip hatası verir.
Bu 'erken tespit' geliştirme verimliliğini ve kalitesini büyük ölçüde artırır.
TypeScript nasıl çalıştırılır?
Prensip olarak, TypeScript olduğu gibi çalıştırılamaz. Bunu tsc (TypeScript Derleyicisi) ile JavaScript'e dönüştürmeniz gerekir..
1npm install -D typescript
2npx tsc --init- Bu işlemi yaparak,
tsconfig.jsonoluşturulur ve TypeScript projesinin davranışını tanımlayan ana dosya sağlanır.
tsconfig.json'un rolü nedir?
tsconfig.json, 'hangi dosyalar', 'hangi kurallarla' ve 'nasıl dönüştürüleceklerini' belirleyen bir yapılandırma dosyasıdır. İlk başta karmaşık görünebilir, ancak gerçekten önemli olan yalnızca birkaç ayardır.
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ESNext",
5 "strict": true
6 }
7}- Yalnızca bu ayarlarla, modern ve güvenli TypeScript geliştirme mümkündür.
target: Çıktı olarak verilecek JavaScript sürümü
target, çıktı olarak oluşturulan JavaScript'in özellik seviyesini belirler.
1"target": "ES2020"Bununla, TypeScript ES2020'ye karşılık gelen JavaScript çıktısı üretir. Daha eski ortamlar için ES5 seçin; yalnızca en yeni ortamlar için ES2022 gibi sürümler tercih edin.
ESNext belirlerken
1"target": "ESNext"-
ESNext, en yeni mevcut JavaScript söz diziminin olduğu gibi çıktı olarak kullanılmasını belirtir. TypeScript, söz dizimini dönüştürmez ve bunun yerine yorumlamayı çalışma zamanındaki ortama (ör. Node.js veya tarayıcı) bırakır. -
Bu nedenle, yalnızca en güncel Node.js'i hedefliyorsanız veya Babel ya da bir paketleyici ile ayrıca dönüştürme yapıyorsanız
ESNextuygundur. Öte yandan, çalışma zamanı ortamı en yeni söz dizimini desteklemiyorsa, bu çalışma zamanı hatalarına neden olabilir, bu yüzden dikkatli olunmalıdır.
module: Modül biçimini belirtin
module, modül biçimini belirtir.
1"module": "ESNext"ESNext, ön yüz ve modern Node.js ortamlarında standarttır.- Yalnızca CommonJS'e ihtiyacınız varsa
"CommonJS"seçin.
strict: Tip güvenliğini en üst düzeye çıkarın
strict, TypeScript'in güvenliğini en üst düzeye çıkaran bir anahtardır.
1"strict": true- Bunu etkinleştirmek, belirsiz tipleri ve potansiyel hataları kapsamlı şekilde yakalar.
strict modu ve örtük any
strict etkinleştirildiğinde, TypeScript, tipi çıkarılamayan değişkenleri hata olarak sayar.
1function printValue(value) {
2 console.log(value);
3}- Bu
valuedeğişkeni tanımlanırken tip bilgisine sahip değildir, bu nedenle TypeScript tipini belirleyemez. Sonuç olarak,anytipi örtük şekilde kullanılır ve bustrictmodunda bir uyarı (hata) oluşturur.
1function printValue(value: number) {
2 console.log(value);
3}- Bu şekilde tipi açıkça belirtirseniz, TypeScript 'bu değişken sadece sayılarla ilgilenir' olarak anlayabilir. TypeScript'te, tipin açıkça belirlenebilmesi , tipin atlanabilmesinden daha önemlidir.
include/exclude: Derlenecek dosyaların kontrolü
tsconfig.json'da, derlemeye hangi dosyaların dahil edileceğini ve hangilerinin hariç tutulacağını belirtebilirsiniz.
1{
2 "include": ["src"],
3 "exclude": ["node_modules"]
4}- Bununla, yalnızca
srcaltındaki dosyalar TypeScript tarafından yönetilecektir. excludeiçinde belirtilennode_modules,includeile dahil edilmiş bir yolun altında olsa bile derlemeye dahil edilmez.
outDir: Çıktı dizinini belirtin
Derleme çıktılarınızın konumunu yönetmek için outDir belirtin.
1"outDir": "dist"- Bununla, tüm derlenmiş sonuçlar
distklasörüne çıkarılacaktır. Pratikte, kaynak kodlarını ve derleme çıktısını ayırmak standart bir uygulamadır.
rootDir: Kaynak dizinini belirtin
rootDir, TypeScript'in kaynak kodun kökü olarak kabul ettiği dizini belirtir.
1"rootDir": "src"-
Bu ayar sayesinde, dosyaları çıkartırken TypeScript dizin yapısını
srctemelinde koruyacaktır. Örneğin,src/index.ts,dist/index.jsolarak çıkartılır. -
rootDiriçinde belirtilen dizin yapısıoutDir'de aynen kopyalanacaktır.
esModuleInterop: CommonJS ve ES Modülleri Arasında Köprü
Sıradaki konu esModuleInterop.
1"esModuleInterop": true- Etkinleştirildiğinde, CommonJS modüllerini güvenli bir şekilde
importsözdizimi ile kullanabilirsiniz.
1import fs from "fs";- Node.js kullanıyorsanız bu ayar neredeyse zorunludur.
noImplicitAny: Örtük 'any' tiplerini yasaklayın
tsconfig.json'da tip kontrollerini güçlendirmek de önemlidir.
1"noImplicitAny": true- Bununla, örtük
anytiplerini yasaklayabilirsiniz. Böylece, tip belirtmeyi unuttuğunuz yerleri güvenilir bir şekilde tespit edebilirsiniz.
Kullanılmayan kodları tespit için yapılandırma
Kullanılmayan kodları tespit etmeye yönelik ayarlar, bakımı kolaylaştırmak için de faydalıdır.
1"noUnusedLocals": true,
2"noUnusedParameters": true- Bununla, gereksiz değişkenler ve argümanlar hemen uyarıyla işaretlenir.
lib: Kullanılabilen yerleşik API'leri tanımlayın
lib, TypeScript'in mevcut olduğunu varsaydığı standart API'leri belirten bir ayardır.
1"lib": ["ES2020", "DOM"]- Bu ayarla, aşağıdaki tipler kullanılabilir olur:.
ES2020ilePromise,MapveSetgibi modern özellikler kullanıma açılır.DOMile,document,windowveHTMLElementgibi tarayıcı API'leri kullanılabilir olur.
Ön yüz geliştirmede DOM ekleyin; yalnızca Node.js projelerinde ise gereksiz global tiplerin dahil edilmemesi için DOM'u çıkarın.
moduleResolution: Modül bulma kuralları
moduleResolution, import ifadelerinde belirtilen modüllerin nasıl çözümleneceğini belirler.
1"moduleResolution": "Node"İki ana seçenek şunlardır:.
Nodebelirtirseniz, Node.js modül çözümleme kuralları kullanılır.Classic, eski ve TypeScript'e özgü bir yöntemdir ancak artık nadiren kullanılır.
Node.js veya bir paketleyici kullanıyorsanız, 'Node'u açıkça belirtmek güvenlidir.
Minimum, üretime hazır bir tsconfig.json
Şimdiye kadar öğrendiklerimize dayanarak, minimum ve üretime hazır bir tsconfig.json şöyle görünebilir:.
1{
2 "compilerOptions": {
3 "target": "ES2020",
4 "module": "ESNext",
5 "moduleResolution": "Node",
6 "lib": ["ES2020", "DOM"],
7 "strict": true,
8 "rootDir": "src",
9 "outDir": "dist",
10 "esModuleInterop": true,
11 "noImplicitAny": true,
12 "noUnusedLocals": true,
13 "noUnusedParameters": true
14 },
15 "include": ["src"]
16}Bu yapılandırma hem ön yüz hem de Node.js projeleri için güvenli bir temel sunar.
Özet: tsconfig.json bir 'kurallar kitabıdır'
tsconfig.json sadece bir yapılandırma dosyası değil, tüm projeye uygulanan bir 'kurallar kitabıdır'. tsconfig.json ile aşağıdakiler gibi önemli politikalar açıkça tanımlanır:.
- Tip güvenliği seviyesi.
- Ekibiniz için kodlama standartları.
- Gelecekteki hataların önlenmesi.
tsconfig.jsonu anladığınızda, yalnızca TypeScript yazmakla kalmayıp projelerinizi güvenli TypeScript kullanımı için tasarlayabileceksiniz.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.