⊗tsSpGnIms 35 of 37 menu

Vincoli delle generics in TypeScript

In una delle lezioni precedenti, abbiamo creato una funzione di tipo generico che avrebbe dovuto restituire la lunghezza del parametro passato. Tuttavia, durante la compilazione, abbiamo riscontrato un errore poiché non tutti i tipi possono avere una lunghezza:

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

In quel caso, abbiamo risolto la situazione modificando il tipo generico in un tipo di array generico. Ma in TypeScript c'è la possibilità di creare dei vincoli per le generics. Per fare questo, dopo la variabile T nelle parentesi angolari, scriviamo la parola chiave extends. Dopo di essa, nelle parentesi graffe, dichiariamo una nuova variabile str di tipo stringa. Il resto del codice della funzione rimarrà invariato:

function myFunc <T extends {str: string}> (data: T): void { console.log(data.str.length); }

Quindi, il tipo generico eredita il tipo della variabile str, specificata tra parentesi graffe. Ora verifichiamo il funzionamento della nostra funzione e creiamo una variabile myStr, che fa riferimento al tipo str, e assegniamole un valore tra parentesi graffe:

let myStr: {str: string} = {str: 'abcde'};

Chiamiamo la funzione myFunc, senza dimenticare di specificare nuovamente il suo tipo e passiamo la variabile myStr come parametro:

myFunc <{str: string}> (myStr);

Basandoti sull'esempio considerato nella lezione, crea una funzione per trovare la lunghezza di un array numerico.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta