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:

typescriptfunction 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:

typescriptfunction 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:

typescriptlet myStr: {str: string} = {str: 'abcde'};

Fonksiyonun tipini tekrar belirtmeyi unutmadan myFunc fonksiyonunu çağıralım ve myStr değişkenini parametre olarak iletilim:

typescriptmyFunc <{str: string}> (myStr);
Задание 1

Derste incelenen örneğe dayanarak, sayısal bir dizinin uzunluğunu bulmak için bir fonksiyon tanımlayın.