TypeScriptда умумлашган тип ўзгартувчилари
Биз умумлашган тип функциясини яратишимиз билан, TypeScript бизни унинг теласида тип ўзгартувчиларини тўғри ишлатишга мажбурлайди. Шу сабабдирки, бизга мавжуд бўлган барча турлар нуқтаи назаридан функцияга ўтказиладиган ҳар бир параметрнинг хатти-ҳаракатини кўриб чиқиш керак.
Келинг, умумлашган типдаги ўзгарувчининг узунлигини аниқлаш учун функция яратайлик:
function myFunc <T> (data: T): T {
console.log(data.length); // хатолик
return data;
}
Хатолик шундан келиб чиқадики, ҳамма турлар узунликка эга эмас. Масалан, буль қийматлар учун бундай амални бажариб бўлмайди. Бирок, агар биз турни аниқлаб, уни массив сифатида кўрсатсак, у ҳолда код тўғри ишлайди. Ҳар бир массив, унинг тури қандай бўлишидан қатъий назар, узунликка эга:
function myFunc <T> (data: T[]): T[] {
console.log(data.length); // 3
return data;
}
console.log(myFunc([1, 3, 5])); // [ 1, 3, 5 ]
Умумлашган турдаги массивнинг барча элементларини такрорлаш ва консолга чиқариш учун функция ёзинг.