TypeScript'te Generics Kısıtlamaları
Önceki derslerden birinde, iletilen parametrenin uzunluğunu çıktılaması gereken genel bir tip fonksiyonu oluşturmuştuk. Ancak derleme sırasında bir hata aldık, çünkü tüm tiplerin uzunluğu olmayabilir:
function myFunc < T > (data: T): T {
console.log(data.length); // hata
return data;
}
O durumda, genel tipi genel dizi tipi olarak
değiştirerek sorunu çözdük. Ancak TypeScript'te
generics kısıtlamaları oluşturma imkanı vardır.
Bunun için, açılı parantezler içinde, T
değişkeninden sonra extends anahtar kelimesini
yazıyoruz. Ondan sonra süslü parantezler içinde
yeni bir str string tipinde değişken
yazıyoruz. Fonksiyonun geri kalan kodu değişmeden
kalacaktır:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Böylece, genel tip süslü parantezler içinde
belirtilen str değişkeninin tipini
miras alır. Şimdi fonksiyonumuzun çalışmasını
kontrol edelim ve str tipine referans
veren bir myStr değişkeni oluşturalım
ve ona süslü parantezler içinde bir değer
atalım:
let myStr: {str: string} = {str: 'abcde'};
Fonksiyonun tipini tekrar belirtmeyi unutmadan
myFunc fonksiyonunu çağıralım ve
myStr değişkenini parametre olarak
iletilim:
myFunc <{str: string}> (myStr);
Derste incelenen örneğe dayanarak, sayısal bir dizinin uzunluğunu bulmak için bir fonksiyon tanımlayın.