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');
primitive === wrapper karşılaştırmasında sonuç false olur:console.log('hello' === new String('hello')); // false
string, String değil) kullanmaya çalışın.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.
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.