Gebruik van tipe parameters in beperkings van generiese in TypeScript

TypeScript het ook die vermoë om een tipe parameter te verklaar, wat deur 'n ander tipe parameter beperk sal word. Dit is nodig wanneer ons eienskappe van een objek na 'n ander moet kopieer, terwyl ons verseker dat ons geen oortollige eienskappe oordra nie.

Kom ons kyk na die volgende voorbeeld. Kom ons gaan terug na funksie myFunc, wat die lengte van 'n veranderlike definieer:

typescriptfunction myFunc <T> (data: T): T {
  console.log(data.length); // fout
  return data;
}

Maar nou wil ons hê dat hierdie funksie slegs met die tipes moet werk wat die eienskap length het. Om dit te doen, skep ons 'n koppelvlak ILength, waaraan ons die eienskap length van tipe nommer gee:

typescriptinterface ILength {
  length: number;
}

Vervolgens definieer ons 'n generiese tipe in ons funksie, wat van ILength oorerf deur die sleutelwoord extends te gebruik:

typescriptfunction myFunc <T extends ILength> (data: T): T {
  console.log(data.length);
  return data;
}

So lyk ons volledige kode:

typescriptinterface ILength {
  length: number;
}

function myFunc <T extends ILength> (data: T): T {
  console.log(data.length);
  return data;
}

Kom ons toets die werking van ons funksie en vind die lengte van 'n string:

typescriptconsole.log(myFunc('abcde'));

Resultaat van uitgevoerde kode:

typescript5
'abcde'

En laat ons nou 'n skikking as parameter oordra:

typescriptconsole.log(myFunc(['a', 'b', 'c']));

Resultaat van uitgevoerde kode:

typescript3
[ 'a', 'b', 'c' ]