ზოგადების შეზღუდვები TypeScript-ში
ერთ-ერთ წინა გაკვეთილზე ჩვენ ვქმნიდით ზოგადი ტიპის ფუნქციას, რომელსაც უნდა გამოეტანა მასში გადაცემული პარამეტრის სიგრძე. თუმცა კომპილაციის დროს მივიღეთ შეცდომა, რადგან არა ყველა ტიპს შეიძლება ჰქონდეს სიგრძე:
function myFunc < T > (data: T): T {
console.log(data.length); // შეცდომა
return data;
}
იმ შემთხვევაში ჩვენ გამოვასწორეთ სიტუაცია, ზოგადი
ტიპის ზოგადი მასივის ტიპით ჩანაცვლებით.
მაგრამ TypeScript-ში არსებობს ზოგადებების
შეზღუდვის შესაძლებლობა. ამისთვის კუთხურ
ფრჩხილებში, ცვლადის T შემდეგ ვწერთ
საკვანძო სიტყვას extends. მის შემდეგ
ფიგურულ ფრჩხილებში ვწერთ ახალ
ცვლადს str სტრიქონული ტიპის.
ფუნქციის დანარჩენი კოდი უცვლელი დარჩება:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
გამოდის, რომ ზოგადი ტიპი აერთიანებს ცვლადის
ტიპს str, რომელიც მითითებულია ფიგურულ
ფრჩხილებში. ახლა მოდით შევამოწმოთ
ჩვენი ფუნქციის მუშაობა და შევქმნათ ცვლადი myStr,
რომელიც მიბმულია ტიპზე str, და მივანიჭოთ
მას მნიშვნელობა ფიგურულ ფრჩხილებში:
let myStr: {str: string} = {str: 'abcde'};
მოდით გამოვიძახოთ ფუნქცია myFunc, არ
დაგვავიწყდეს მისი ტიპის კვლავ მითითება და გადავცეთ
ცვლადი myStr როგორც პარამეტრი:
myFunc <{str: string}> (myStr);
გაკვეთილზე განხილული მაგალითის საფუძველზე, დააყენეთ ფუნქცია რიცხვითი მასივის სიგრძის საპოვნელად.