NodeJS projesine Typescript desteği eklenmesi
NodeJS alt yapısı Javascript dili ile server uygulamalari geliştirmemizi mümkün kılmıştır. Piyasaya cıktığı 2011 yılından itibaren cok hızlı şekilde yaygınlaşmıştır ve beraberinde büyüyen kod tabanları Javascript’in dinamik ve zayıf veri tipi yapısı nedeni ile geliştirmelerde zorluklar yaratmıştır.
Server uygulamaları geliştirmekte kullanılan diğer dillerden gelen insanlar Javascript’in bu zayıf yönlerinden çok şikayet etmektedir ve bu açığı kapatmak için Typescript gündeme gelmiştir.
Typescript Javascript dilinin güçlü şekilde type desteği eklenmiş bir versiyonu diyebiliriz. Typescript kodları ara dönüşüm yapılarak Javascript kodlarına dönüştürülmektedir yani günün sonunda çalışan kod Javascript kodudur fakat geliştirme yaparken Typescript dili özellikleri ile geliştirme yapıyoruz.
Typescript’in faydalarından bazıları şunlardır :
- Opsiyonel static tipler ( number, string vs )
- Tip takibi
- Interface yapısını desteklemesi
Bu yazıda Express framework’u kullanan bir NodeJS uygulamasını Typescript desteği ile oluşturacağız.
Bilgilendirme
Bu yazıda anlatacağım NodeJS içinde typescript örneğini gerçek bir server uygulamasında görmek isterseniz Sıfırdan Startup — Code42Labs App serisini takip etmenizi tavsiye ederim. Server alt yapısını NodeJS + Typescript ile geliştiriyorum.
Ayrıca bu yazıda anlattığım detayları github üzerindeki proje içinde hazır şekilde bulabilirsiniz.
Adım 1 — NodeJS projesinin hazırlanması
mkdir project1
cd project1
Sonraki adımda npm projesini oluşturuyoruz, bu noktada sadece npm i dersek bize bir sürü ayarsal sorular soracağı için varsayılanlarlar kurulum yapması için npm i -y cağıracağız
npm init -y
Adım 2 — Kütüphanelerin kurulması
İlk olarak Typescript kütüphanesini kuracağız
npm install -D typescript@3.3.3
npm install -D tslint@5.12.1
komutlardaki -D ile aslında –save-dev’in yaptığı işlemi yaptırıyoruz.
Typescript kurulumu sonrasında express kütüphanesini kuruyoruz.
npm install -S express@4.16.4
npm install -D @types/express@4.16.1
Yukarıdaki kütüphanelerden @types/express Typescript’in express framework’unu type’lar ile görebilmesini sağlamaktadır.
Adım 3 — Typescript’in konfigure edilmesi
Typescript ayarlarını tsconfig.json adındaki dosya ile yönetebiliyoruz ve bu dosya projenin ana dizininde yer almalıdır.
JSON içindeki ayarların bazılarının açıklaması şu şekildedir:
module
: Module kodunu üretirken kullanılan metodu belirtir. Nodejs icin commonjs’dir.target
: Hedef dil seviyesini belirtirmoduleResolution
: Bu ayar sayesinde typescript complier’a import yapısını nasıl kurması gerektiğini belirtiriz. NodeJS icin node ayarını kullanıyoruz.outDir
: transpilation işlemi sonucunda yani ts dosyalarının okunup js dosyalarına dönüştürülmesi sonrasında, oluşan dosyaları nereye kaydetmek istediğimizi belirttiğimiz ayar.
Bu noktaya kadar typescript ayar dosyasını hazırladık, bu noktada ise tslint ayar dosyasını hazırlayacağız. Peki tslint neden ayarlıyoruz ? tslint kodumuzu inceleyip kodumuzu kurallara göre düzgün yazılmışmi kontrol edip bizi bilgilendiriyor.
./node_modules/.bin/tslint — init
komutu ile tslint ayar dosyasının oluşmasını sağlıyoruz.
Adım 4 — En temel express sunucusunun hazılanması ve ayarlanması
Typescript ayarlarını tamamladıktan sonra sırada express framework kurup projemizi hazırlayabiliriz
npm ile init ettiğimiz projenin içinde src adında bir klasör oluşturuyoruz ve içine app.ts adındaki dosyamızı oluşturuyoruz.
Express framework kurmak için aşağıdaki komutu vermeliyiz
npm i express
Herşeyi hazırladık gibi görünüyor ve projeyi ayağa kaldırabiliriz bunun için yapmanız gereken aşağidaki komutu vermek
./node_modules/.bin/tsc && node dist/app.js
Ve Typescript ile geliştirdiğimiz ilk projemizi çalıştırdık !
ts kodundan oluşan js dosyasını dist klasörü içerisinde bulabilirsiniz.
Gördüğünüz gibi typescript bize statik dillerin güzelliğini JS dünyası ile birleştirmemize gayet başarılı şekilde yardımcı oluyor.
Benim 15 yıllık yazılım geliştirme tecrübeme göre tavsiyem eğer NodeJS projesi geliştirecekseniz mutlaka Typescript entegre edin hem kod tamamlama hem de kod hatalarını geliştirme yaparken görme kolaylıkları sayesinde uygulamalarınızın kalitesi artacaktır.