مبدل JSON به TypeScript
یک پاسخ API را جایگذاری کنید و interface یا type alias آمادهٔ TypeScript بگیرید؛ نوعهای تودرتو، فیلدهای اختیاری و unionهای null خودکار استنتاج میشوند.
اجرا در مرورگر شمابدون ثبتنامبدون آپلود
نحوهٔ استفاده از JSON به TypeScript
- یک نمونهٔ JSON، مثلاً پاسخ یک API، را در کادر سمت راست جایگذاری کنید یا یک فایل
.jsonباز کنید. - نام نوع ریشه را تعیین کنید (مثلاً
UserیاApiResponse). - اعلانهای
interfaceیاtypeرا انتخاب کنید وexport،readonlyیا اختیاری بودن همهٔ فیلدها را تنظیم کنید. - برای مقادیری که نمونه نمیتواند نوعشان را نشان دهد، مانند آرایههای خالی و nullها،
unknown(امنتر) یاanyرا انتخاب کنید. - کد تولیدشده را کپی کنید یا بهصورت فایل
.tsدانلود کنید.
نوعها چگونه استنتاج میشوند
- مقادیر اولیه: رشتهها، اعداد و مقادیر بولی به
string،numberوbooleanنگاشت میشوند. - اشیای تودرتو به interfaceهای نامدار مستقل با PascalCase تبدیل میشوند، بنابراین
billing_addressبهBillingAddressتبدیل میشود. - آرایههای اشیا در یک نوع آیتم با نام مفرد ادغام میشوند:
usersنوعUser[]را میدهد. کلیدی که در برخی آیتمها نیست اختیاری میشود (key?:). - مقادیر null با سایر مقادیر دیدهشده برای آن کلید ترکیب میشوند:
string | null. کلیدی که همیشهnullاست بهunknownیاanyبرمیگردد. - آرایههای مختلط به آرایههای union مانند
(number | string)[]تبدیل میشوند. - ساختارهای یکسان یک بار اعلان و دوباره استفاده میشوند، و ساختارهای متفاوتی که نام مشترک پیدا میکنند یک پسوند عددی میگیرند.
- کلیدهایی که شناسهٔ معتبر نیستند، مانند
"first-name"یا"2fa"، داخل نقلقول قرار میگیرند.
interface در برابر type
برای ساختارهای سادهٔ شیء، این دو تقریباً قابل جایگزینیاند. اعلانهای interface را میتوان گسترش داد و ادغام کرد و خطاهای کامپایلر کمی واضحتری میدهند. aliasهای type میتوانند union و mapped type را هم بیان کنند. بسیاری از تیمها برای مدلهای API از interface و برای بقیه از type استفاده میکنند؛ هر کدام را که کدبیس یا linter شما (@typescript-eslint/consistent-type-definitions) انتظار دارد انتخاب کنید.
نوعهای بهتر از نمونهٔ شما
نوعها فقط به اندازهٔ نمونه کاملاند. پاسخی را جایگذاری کنید که فیلدهای اختیاری دارد، یا آرایهای با چند آیتم متنوع، تا مولد بتواند کلیدهای اختیاری و nullable را تشخیص دهد. مقادیری مانند تاریخها و enumها در JSON بهصورت رشتهٔ ساده میآیند؛ بعداً آنها را دستی محدود کنید، مثلاً status: 'active' | 'disabled'. برای اعتبارسنجی در زمان اجرا، نوعهای تولیدشده را با یک کتابخانهٔ schema مانند Zod همراه کنید.
پرسشهای متداول
آیا JSON من آپلود میشود؟
ویژگیهای اختیاری چگونه تشخیص داده میشوند؟
? اختیاری علامت میخورند. با یک شیء تنها همهٔ کلیدها الزامیاند، مگر اینکه همه اختیاری را فعال کنید.از <code>unknown</code> استفاده کنم یا <code>any</code>؟
unknown امنتر است: TypeScript شما را مجبور میکند پیش از استفاده نوع مقدار را محدود کنید. any بررسی نوع را برای آن مقدار خاموش میکند. فقط اگر قصد دارید بعداً نوعها را دقیقتر کنید از آن استفاده کنید.چرا تاریخ ISO بهصورت <code>string</code> تایپ میشود؟
new Date() تبدیل میکنید، ویژگی را در مدل خود به Date تغییر دهید.