⊗tsSpGnIms 35 of 37 menu

Einschränkungen von Generics in TypeScript

In einer der vorherigen Lektionen haben wir eine Funktion generischen Typs erstellt, die die Länge des an sie übergebenen Parameters ausgeben sollte. Bei der Kompilierung erhielten wir jedoch einen Fehler, da nicht alle Typen eine Länge haben können:

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

In jenem Fall haben wir die Situation behoben, indem wir den generischen Typ in einen Typ eines generischen Arrays geändert haben. Aber in TypeScript gibt es eine Möglichkeit, Einschränkungen für Generics zu erstellen. Dazu schreiben wir in den spitzen Klammern, nach der Variable T, das Schlüsselwort extends. Danach schreiben wir in geschweiften Klammern eine neue Variable str vom String-Typ. Der restliche Code der Funktion bleibt unverändert:

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

Es ergibt sich, dass der generische Typ den Typ der Variable str erbt, die in den geschweiften Klammern angegeben ist. Lassen Sie uns nun die Funktionsweise unserer Funktion überprüfen und eine Variable myStr erstellen, die auf den Typ str verweist, und weisen ihr einen Wert in geschweiften Klammern zu:

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

Lassen Sie uns die Funktion myFunc aufrufen, ohne zu vergessen, ihren Typ erneut anzugeben, und übergeben die Variable myStr als Parameter:

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

Basierend auf dem im Unterricht betrachteten Beispiel definieren Sie eine Funktion zum Ermitteln der Länge eines numerischen Arrays.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen