JSON ל-TypeScript
יצירת ממשקי TypeScript ו-JSON Schema מדוגמת JSON
למה זה שימושי?
כשעובדים עם API חיצוני, בדרך כלל מקבלים JSON אבל צריך types ב-TypeScript. כתיבת הטיפוסים ידנית לכל endpoint היא עבודה שחוזרת על עצמה, עם הרבה מקום לטעויות. הכלי הזה לוקח דוגמה של JSON אמיתי ומייצר interface מוכן — נקודת התחלה מצוינת לקוד.
מה אפשר לייצר?
TypeScript Interface
interface עם כל השדות, טיפוסים נכונים, ואובייקטים מקוננים כ-interfaces נוספים. מוכן להדבקה בפרויקט.
JSON Schema
מסמך JSON Schema (draft 2020-12) שאפשר להשתמש בו עם ספריות validation כמו Ajv, Zod (עם המרה), או TypeBox. שימושי ל-API validation, form validation, ו-OpenAPI specs.
מגבלות שחשוב להבין
הכלי מסיק טיפוסים מדוגמה אחת של JSON. זה אומר:
- אין מידע על שדות אופציונליים — אם בדוגמה אין שדה, הכלי לא יודע שהוא יכול להופיע. סמן "שדות אופציונליים" אם לא בטוח.
- מערכים ריקים → any[] — אם
tags: [], לא ניתן לדעת טיפוס האלמנטים. - null → any — null לא נותן מידע על הטיפוס האמיתי.
- Union types לא מזוהים — אם שדה יכול להיות מחרוזת או מספר במצבים שונים, הכלי רואה רק את מה שבדוגמה.
לשיפור התוצאה: ספק JSON מלא (כל השדות האפשריים), הימנע מ-null, ועם מערכים — ודא שיש לפחות אלמנט אחד מייצג.
TypeScript לעומת Zod
TypeScript interface נותן type-checking בזמן קומפיילציה. אבל API חיצוני יכול להחזיר דברים שלא תואמים ל-interface והקוד ירוץ עם ציפיות שגויות. Zod (או TypeBox, io-ts) מספקים validation ב-runtime — הם בודקים בזמן אמת שהנתונים תואמים לסכמה. הכלי הזה מייצר את ה-interface; אם צריך validation ב-runtime, משתמשים ב-JSON Schema שהוא מייצר עם Ajv, או ממירים ידנית ל-Zod.