TypeScript ile Automapper kütüphanesi

Oluşturma Tarihi: 23.07.2024 04:14:00
Yazar: Beginnerdeveloper


Öncelikle bu kütüphane ne işe yarar ondan bahsedelim.  Nesneleri maplemek için kullandığımız bir kütüphanedir. Örnek verecek olursak client tarafına gereksiz veya gösterilmemesi gereken bazı veri tabanı bilgileri vardır. Mesela kullanıcı şifresi.  Evet şifreyi hashliyoruz ancak yine de gönderilmesi mantıksızdır ve güvenlik açığı oluşabilir. Bu gibi durumların önüne geçmek için bu kütüphaneyi kullanıyoruz. 

Eee tamam da biz bunu tek tek de yapabiliriz gerek varmı ki?

- Cevabımız evet var maaliyet ve zaman kazandırıyor.

Çok basit projelerde kullanmak mantıklı olmayabilir ancak içeriği çok fazla olan nesneyi, dto nesnesine tek tek yazarak aktarmak doğal olarak yorucu olur.  

Bu kütüphane .NET tarafında da var ve Türkçe kaynak çok fazla olduğu için burada anlatılmasını gereksiz buluyorum. Ancak Typescript tarafında nasıl kullanıldığına dair Türkçe kaynak göremediğim için ben yapma kararı aldım. :)

Öncelikle 2 adet npm paketini projemize dahil etmeliyiz.

-> npm i @automapper/core
-> npm i @automapper/classes

Daha sonra maplenecek nesnelerimizi automappera bildirmemiz gerekiyor.

Bu projemizde BaseEntity nesnemizde var aynı işlemi onada uygulayalım.


Bu şekilde @AutoMap() ile entity nesnemizin içeriğini bildiriyoruz.

Aynı işlemi dto içinde yapmalıyız.


Ancak bir sorunumuz var TypeScript yapılandırmamız eğer bazı ayarlarımız eksikse burada hata verecektir. Bu yüzden tsconfig.ts dosyamız bu şekilde olmalı.



Artık işimiz  bitti MapProfile adında kendi fonksiyonumuzu  oluşturup hangi nesnelerin  nasıl mapleneceği hakkında automappera bilgi verelim.


İşte burada son işlemimizi yapmış oluyoruz. Artık User nesnesi UserDto nesnesine maplenebilecek. createMap() fonksiyonu ile istediğimiz maplenecek nesneleri yazabiliriz. Peki nasıl kullanacağız.


Burada da  Service katmanımızda nasıl nesneyi mapleyip kullancağımızın örneği vardır. 

Çok fazla fonksiyon içeriğide mevcut maplenirken istediğimiz nesnenin alanına başka değerler de atayabiliyoruz örnek olarak :


Burada RegisterDto User nesnesine maplenirken createDate alanımıza günün tarihini atıyorum. Ve ben bu mapleme işlemini her kullandığımda artık tek tek elimle bu tarih atamasını yazmam gerekmeyecek.


Daha fazlası için ilgili döküman: https://automapperts.netlify.app/.

Son olarak okuduğun için teşekkür ederim. :)