ProgramlamaBackend geliştirici

TypeScript'te Generics tipinin ne olduğunu, evrensel fonksiyonlar ve sınıflar yazmak için nasıl kullanılacağını açıklayın. Karşılaşılabilecek tuzaklar nelerdir?

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

Cevap.

Generics (genel türler), farklı türlerle çalışan evrensel kod yazmayı sağlar ve katı tür güvenliğini korur.

Kullanım Söz Dizimi:

function identity<T>(value: T): T { return value; } const x = identity<string>('test'); // T = string

Nerelerde Kullanılır:

  • Koleksiyonların evrensel fonksiyonları (map, filter vb.)
  • Sınıflar (örneğin, Repository<Entity>)
  • Arayüzler (örneğin, genel türde API yanıtı)

Tür kısıtlaması ile örnek:

function getFirst<T extends { length: number }>(arr: T): T { return arr[0]; }

Yanıltıcı Soru.

Soru: Generic parametre ile fonksiyon çağırırken belirli bir türü belirtmek zorunlu mu?

Cevap:

Zorunlu değil. TypeScript, mümkünse iletilen değerlere göre türleri otomatik olarak çıkarır (çıkarım yapar). Ancak bazen belirteci netleştirmek faydalıdır; örneğin, değerlerden tür net değilse veya birden fazla seçenek varsa.

function identity<T>(value: T): T { return value; } identity(5); // T = number (otomatik) identity<string>('s'); // T = string (belirtilmiş)

Konuyla ilgili bilgilerin eksik olmasından kaynaklanan gerçek hata örnekleri.


Hikaye

E-ticaret projesinde farklı varlıklar için genel bir repository yazdık ama tür kısıtlamasını unuttuk. Sonuçta genel tür olarak herhangi bir nesne gelebiliyordu ve bir seferinde uyumsuz alanlarla bir varlık kaydettik. Türler hatadan korumadı.


Hikaye

Şablon fonksiyonuna bir dizi geçtik ve elemanların türünü beklüyorduk. Fakat fonksiyon any[] döndürdü, çünkü generic açıkça belirtilmemişti ve TypeScript türü çıkaramadı. Hata üretim ortamında ancak fark edildi.


Hikaye

Yenilikçi bir geliştirici, tür kısıtlaması olmadan bir genel sınıf oluşturdu, her türde olmayan bir alanı kullandı. Derleyici herhangi bir hata vermedi ama mevcut olmayan bir özelliğe erişildiğinde tüm işlevsellik bozuldu.