Μετατροπή JSON σε TypeScript
Επικολλήστε μια απόκριση API και πάρτε έτοιμα TypeScript interfaces ή type aliases, με εμφωλευμένους τύπους, προαιρετικά πεδία και ενώσεις με null να συνάγονται αυτόματα.
Τρέχει στον browser σαςΧωρίς εγγραφήΤίποτα δεν ανεβαίνει
Πώς να χρησιμοποιήσετε: JSON σε TypeScript
- Επικολλήστε ένα δείγμα JSON, όπως μια απόκριση API, στο αριστερό πλαίσιο ή ανοίξτε ένα αρχείο
.json. - Ορίστε το όνομα του τύπου ρίζας (για παράδειγμα
UserήApiResponse). - Επιλέξτε δηλώσεις
interfaceήtypeκαι ενεργοποιήστεexport,readonlyή όλα τα πεδία προαιρετικά. - Διαλέξτε
unknown(ασφαλέστερο) ήanyγια τιμές που το δείγμα δεν αποκαλύπτει, όπως κενοί πίνακες και null. - Αντιγράψτε τον κώδικα που δημιουργήθηκε ή κατεβάστε τον ως αρχείο
.ts.
Πώς συνάγονται οι τύποι
- Πρωτογενείς τύποι: strings, αριθμοί και booleans αντιστοιχούν σε
string,numberκαιboolean. - Εμφωλευμένα αντικείμενα γίνονται ξεχωριστά ονομασμένα interfaces σε PascalCase, οπότε το
billing_addressγίνεταιBillingAddress. - Πίνακες αντικειμένων συγχωνεύονται σε έναν τύπο στοιχείου με όνομα στον ενικό: το
usersδίνειUser[]. Ένα κλειδί που λείπει από ορισμένα στοιχεία γίνεται προαιρετικό (key?:). - Τιμές null συνδυάζονται με τις άλλες τιμές που εμφανίστηκαν για το κλειδί:
string | null. Ένα κλειδί που είναι πάνταnullκαταλήγει σεunknownήany. - Μικτοί πίνακες γίνονται πίνακες ένωσης, όπως
(number | string)[]. - Πανομοιότυπες δομές δηλώνονται μία φορά και επαναχρησιμοποιούνται, ενώ διαφορετικές δομές που θα είχαν το ίδιο όνομα παίρνουν αριθμητικό επίθημα.
- Κλειδιά που δεν είναι έγκυρα αναγνωριστικά, όπως
"first-name"ή"2fa", μπαίνουν σε εισαγωγικά.
interface ή type
Για απλές δομές αντικειμένων τα δύο είναι σχεδόν ισοδύναμα. Οι δηλώσεις interface μπορούν να επεκταθούν και να συγχωνευθούν και δίνουν ελαφρώς σαφέστερα σφάλματα compiler. Τα type aliases μπορούν επιπλέον να εκφράσουν ενώσεις και mapped types. Πολλές ομάδες χρησιμοποιούν interfaces για τα μοντέλα API και types για όλα τα υπόλοιπα· επιλέξτε ό,τι περιμένει ο κώδικας ή ο linter σας (@typescript-eslint/consistent-type-definitions).
Καλύτεροι τύποι από το δείγμα σας
Οι τύποι μπορούν να είναι μόνο τόσο πλήρεις όσο το δείγμα. Επικολλήστε μια απόκριση που περιλαμβάνει προαιρετικά πεδία ή έναν πίνακα με αρκετά διαφορετικά στοιχεία, ώστε η γεννήτρια να εντοπίσει προαιρετικά και nullable κλειδιά. Τιμές όπως ημερομηνίες και enums φτάνουν ως απλά strings στο JSON· περιορίστε τες με το χέρι στη συνέχεια, για παράδειγμα status: 'active' | 'disabled'. Για επικύρωση κατά την εκτέλεση, συνδυάστε τους τύπους με μια βιβλιοθήκη σχημάτων όπως το Zod.
Συχνές ερωτήσεις
Ανεβαίνει το JSON μου;
Πώς εντοπίζονται οι προαιρετικές ιδιότητες;
?. Με ένα μόνο αντικείμενο όλα τα κλειδιά είναι υποχρεωτικά, εκτός αν τσεκάρετε Όλα προαιρετικά.Να χρησιμοποιήσω <code>unknown</code> ή <code>any</code>;
unknown είναι ασφαλέστερο: η TypeScript σας αναγκάζει να περιορίσετε την τιμή πριν τη χρησιμοποιήσετε. Το any απενεργοποιεί τον έλεγχο τύπων για αυτή την τιμή. Χρησιμοποιήστε το μόνο αν σκοπεύετε να βελτιώσετε τους τύπους αργότερα.Γιατί μια ημερομηνία ISO έχει τύπο <code>string</code>;
new Date() μετά την ανάλυση, αλλάξτε την ιδιότητα σε Date στο μοντέλο σας.