⊗tsSpGnPTL 36 of 37 menu

Χρήση Τυπικών Παραμέτρων σε Περιορισμούς Generics στο TypeScript

Επίσης, στο TypeScript υπάρχει η δυνατότητα δήλωσης μιας τυπικής παραμέτρου, η οποία θα περιορίζεται από μια άλλη τυπική παράμετρο. Αυτό είναι απαραίτητο όταν πρέπει να αντιγράψουμε ιδιότητες από ένα αντικείμενο σε ένα άλλο, ενώ ταυτόχρονα να προστατευτούμε από το ότι μπορεί να μεταφέρουμε μια επιπλέον ιδιότητα.

Ας εξετάσουμε το ακόλουθο παράδειγμα. Ας επιστρέψουμε ξανά στη συνάρτηση myFunc, που ορίζει το μήκος μιας μεταβλητής:

function myFunc <T> (data: T): T { console.log(data.length); // σφάλμα return data; }

Ωστόσο, τώρα θέλουμε αυτή η συνάρτηση να λειτουργεί μόνο με τους τύπους που έχουν την ιδιότητα length. Για να το κάνουμε αυτό, ας δημιουργήσουμε τη διεπαφή ILength, στην οποία θα ορίσουμε την ιδιότητα length αριθμητικού τύπου:

interface ILength { length: number; }

Στη συνέχεια, στη συνάρτησή μας θα ορίσουμε έναν γενικευμένο τύπο, που κληρονομεί από το ILength μέσω της λέξης-κλειδιού extends:

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

Ας δούμε τον πλήρη κώδικά μας:

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

Ας ελέγξουμε τη λειτουργία της συνάρτησής μας και ας βρούμε το μήκος μιας συμβολοσειράς:

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

Αποτέλεσμα του εκτελεσμένου κώδικα:

5 'abcde'

Και τώρα ας περάσουμε μια πλειάδα ως παράμετρο:

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

Αποτέλεσμα του εκτελεσμένου κώδικα:

3 [ 'a', 'b', 'c' ]
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη