TypeScript-dä umumy tipiň çäklemeleri
Öňki sapaklaryň birinde biz uzynlygy çykarmaly bolan umumy tip funksiýasyny döretdik. Emma kompilirleýän wagtymyzda ýalňyşlyk çykdy, sebäbi hemme tipler uzynlyga eýe bolup bilmeýär:
function myFunc < T > (data: T): T {
console.log(data.length); // ýalňyşlyk
return data;
}
Şol wagt biz ýagdaýy düzetdik, umumy tipi
umumy massiw tipine üýtgetdik.
Ýöne TypeScript-dä umumy tipiň çäklemelerini döretmek
mümkinçiligi bar. Buny üçin burç ýaýlarynda, üýtgeýjiniň
T-dan soň, extends açary sözüni ýazyňyz.
Ondan soň, egri ýaýlarynda täze üýtgeýji
str setir tipini ýazyňyz.
Funksiýanyň galan kody üýtgeşikliksiz galar:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Demek, umumy tip, egri ýaýlarynda görkezilen
str üýtgeýjisiniň tipinden miras alýar.
Indi biz öz funksiýamyzyň işini barlaýarys we
myStr üýtgeýjisini döredýäris,
str tipine salgylanýar, we ona
egri ýaýlarynda baha berýäris:
let myStr: {str: string} = {str: 'abcde'};
Geliň, myFunc funksiýasyny çagyralyň,
ýene-de onuň tipini görkezmegi unutmaň we
myStr üýtgeýjisini parametr hökmünde geçireliň:
myFunc <{str: string}> (myStr);
Sapakda görlen mysala esasan, san massiwiniň uzynlygyny tapmak üçin funksiýany belgiň.