Tipisku parametru izmantošana ierobežojumos ģenerikos TypeScript
TypeScript ir arī iespēja deklarēt vienu tipa parametru, kas tiks ierobežots ar citu tipa parametru. Tas ir nepieciešams, kad nākas kopēt īpašības no viena objekta otrā, vienlaikus pasargājoties no tā, ka mēs nepadosim nevajadzīgu īpašību.
Apskatīsim šādu piemēru. Atgriezīsimies
pie funkcijas myFunc, kas nosaka
mainīgā garumu:
typescriptfunction myFunc <T> (data: T): T {
console.log(data.length); // kļūda
return data;
}
Tomēr tagad mēs vēlamies, lai šī funkcija
strādātu tikai ar tiem tipiem, kuriem
ir īpašība length. Lai to izdarītu, izveidosim
interfeisu ILength, kuram piešķirsim
īpašību length skaitliskā tipā:
typescriptinterface ILength {
length: number;
}
Tālāk mūsu funkcijā iestatīsim vispārīgo
tipu, kas manto no ILength
izmantojot atslēgvārdu extends:
typescriptfunction myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Šādi izskatās mūsu pilnais kods:
typescriptinterface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Pārbaudīsim mūsu funkcijas darbību un atradīsim virknes garumu:
typescriptconsole.log(myFunc('abcde'));
Izpildītā koda rezultāts:
typescript5
'abcde'
Un tagad padodam parametrā masīvu:
typescriptconsole.log(myFunc(['a', 'b', 'c']));
Izpildītā koda rezultāts:
typescript3
[ 'a', 'b', 'c' ]