TypeScript-də Ümumiləşdirmələrin Məhdudiyyətləri

Əvvəlki dərslərin birində biz ötürülən parametrin uzunluğunu çıxarmalı olan ümumi tip funksiya yaratmışdıq. Lakin kompilyasiya zamanı bizə xəta verildi, çünki bütün tiplərin uzunluğu ola bilməz:

typescriptfunction myFunc < T > (data: T): T {
  console.log(data.length); // xəta
  return data;
}

O halda biz vəziyyəti ümumi tipi ümumi massiv tipinə dəyişməklə həll etdik. Lakin TypeScript-də ümumiləşdirmələrə məhdudiyyət qoymaq imkanı var. Bunun üçün bucaqlı mötərizələrdə, T dəyişənindən sonra extends açar sözünü yazırıq. Ondan sonra qıvrım mötərizələrdə sətir tipində yeni str dəyişənini qeyd edirik. Funksiyanın qalan kodu dəyişməz qalacaq:

typescriptfunction myFunc <T extends {str: string}> (data: T): void {
  console.log(data.str.length);
}

Belə çıxır ki, ümumi tip qıvrım mötərizələrdə göstərilən str dəyişəninin tipini miras alır. İndi gəlin funksiyamızın işini yoxlayaq və str tipinə istinad edən myStr dəyişəni yaradaq və ona qıvrım mötərizələrdə dəyər təyin edək:

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

Gəlin myFunc funksiyasını çağıraq, onun tipini bir daha göstərməyi unutmayaq və myStr dəyişənini parametr kimi ötürək:

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

Dərsdə nəzərdən keçirilən nümunə əsasında, ədədi massivin uzunluğunu tapmaq üçün funksiya təyin edin.