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:
function 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:
function 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:
let 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:
myFunc <{str: string}> (myStr);
Dərsdə nəzərdən keçirilən nümunə əsasında, ədədi massivin uzunluğunu tapmaq üçün funksiya təyin edin.