ProgramlamaBackend Geliştirici / TypeScript Mimarı

TypeScript'te sarıcı türler (Wrapper types) nasıl uygulanır ve ne amaçla kullanılır? Primitifler ve onların sarıcıları ile çalışırken hangi sorunlar ortaya çıkar?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

TypeScript, primitif türleri (string, number, boolean) ve bunların nesne sarıcılarını (String, Number, Boolean) ayırır. Sarıcılar, yapıcılar aracılığıyla oluşturulmuş nesnelerdir:

const primitive: string = 'hello'; const wrapper: String = new String('hello');
  • Primitifler — basit, etkili, yalnızca yerleşik yöntemler ve özellikler içerir.
  • Obj-sarıcılar — ilgili yöntemler/özellikler ile nesnelerdir, iş mantığında nadiren kullanılırlar.
  • primitive === wrapper karşılaştırmasında sonuç false olur:
console.log('hello' === new String('hello')); // false
  • Türleme yaparken her zaman primitifleri (string, String değil) kullanmaya çalışın.
  • Sarıcılar, yalnızca generic-API kütüphaneleriyle (örneğin, yansıtma veya meta programlama için) çalışma gerektiğinde uygulanır.

Altta Yatan Soru

TypeScript arayüzlerinde, değerler primitifler olduğunda sarıcı türleri (String, Number, Boolean) kullanmak mümkün mü?

Cevap: Sarıcıların kullanılmasını tavsiye etmem: çoğu durumda değerler primitif olacaktır ve arayüzün tür-sarıcıdan doğrudan miras alması hatalara yol açacaktır. Her zaman string, number, boolean kullanmak daha iyidir.

Konunun inceliklerini bilmemekten kaynaklanan gerçek hata örnekleri


Hikaye

Bir web uygulamasında, kullanıcı adını saklamak için String türü bir arayüzde kullanıldı. Bu, karşılaştırma hatalarına ve tam olarak aynı türleri gerektiren birim testleri sırasında yanlış geçme durumlarına yol açtı (primitifler ve sarıcılar kimlik farklılıkları gösterir).


Hikaye

Bir kütüphane geliştiricisi, generic bir fonksiyonu Number ile türledi ve kütüphane kullanıcıları primitif değerler verdi, bu da primitifler için beklenmeyen şekilde çalışmayan type guards yöntemiyle sorunlar yarattı. Tür dönüştürme hatasını düzeltmek zor oldu.


Hikaye

Bir analitik hizmette, kullanıcı etkinlik bayrağı için Boolean türü kullanıldı ve veri filtrelemesi sırasında karşılaştırma sonucu her zaman false oldu, oysa görsel olarak değerler eşleşiyordu. Bu, yanlış veri işlenmesine ve raporların çökmesine neden oldu.