JSON سے TypeScript کنورٹر

API ریسپانس پیسٹ کریں اور استعمال کے لیے تیار TypeScript interfaces یا type aliases حاصل کریں، نیسٹڈ ٹائپس، اختیاری فیلڈز اور null unions خودکار طور پر اخذ شدہ۔

آپ کے براؤزر میں چلتا ہےسائن اپ کی ضرورت نہیںکچھ اپ لوڈ نہیں ہوتا

TypeScript

JSON سے TypeScript استعمال کرنے کا طریقہ

  1. JSON نمونہ، جیسے API ریسپانس، پہلے خانے میں پیسٹ کریں یا .json فائل کھولیں۔
  2. روٹ ٹائپ کا نام سیٹ کریں (مثلاً User یا ApiResponse)۔
  3. interface یا type ڈیکلیریشنز منتخب کریں اور export، readonly یا سب فیلڈز اختیاری کو آن/آف کریں۔
  4. ان ویلیوز کے لیے جنہیں نمونہ ظاہر نہیں کر سکتا، جیسے خالی ارے اور nulls، unknown (زیادہ محفوظ) یا any منتخب کریں۔
  5. بنایا گیا کوڈ کاپی کریں یا .ts فائل کے طور پر ڈاؤن لوڈ کریں۔

ٹائپس کیسے اخذ ہوتی ہیں

  • بنیادی ٹائپس: سٹرنگز، نمبرز اور بولینز string، number اور boolean بنتے ہیں۔
  • نیسٹڈ آبجیکٹس PascalCase میں اپنے الگ نامزد interfaces بنتے ہیں، اس لیے billing_address بن جاتا ہے BillingAddress۔
  • آبجیکٹس کے ارے ایک آئٹم ٹائپ میں یکجا ہوتے ہیں جس کا نام واحد میں ہوتا ہے: users سے User[] بنتا ہے۔ جو کی کچھ آئٹمز میں نہ ہو وہ اختیاری بن جاتی ہے (key?:)۔
  • Null ویلیوز اس کی کے لیے دیکھی گئی دوسری ویلیوز کے ساتھ ملتی ہیں: string | null۔ جو کی ہمیشہ صرف null ہو وہ unknown یا any پر چلی جاتی ہے۔
  • ملے جلے ارے union ارے بنتے ہیں جیسے (number | string)[]۔
  • ایک جیسی شکلیں ایک بار ڈیکلیئر ہو کر دوبارہ استعمال ہوتی ہیں، اور مختلف شکلیں جن کا نام ایک جیسا بنتا ہو انہیں عددی لاحقہ ملتا ہے۔
  • جو کیز درست identifiers نہیں، جیسے "first-name" یا "2fa"، انہیں کوٹس میں رکھا جاتا ہے۔

interface بمقابلہ type

سادہ آبجیکٹ شکلوں کے لیے دونوں تقریباً ایک دوسرے کا متبادل ہیں۔ interface ڈیکلیریشنز کو extend اور merge کیا جا سکتا ہے اور یہ کمپائلر ایررز کچھ زیادہ واضح دیتی ہیں۔ type aliases unions اور mapped types بھی ظاہر کر سکتے ہیں۔ بہت سی ٹیمیں API ماڈلز کے لیے interfaces اور باقی سب کے لیے types استعمال کرتی ہیں؛ وہ چنیں جس کی آپ کا کوڈ بیس یا linter (@typescript-eslint/consistent-type-definitions) توقع کرتا ہے۔

اپنے نمونے سے بہتر ٹائپس حاصل کریں

ٹائپس اتنی ہی مکمل ہو سکتی ہیں جتنا نمونہ۔ ایسا ریسپانس پیسٹ کریں جس میں اختیاری فیلڈز ہوں، یا کئی مختلف آئٹمز والا ارے، تاکہ جنریٹر اختیاری اور nullable کیز پہچان سکے۔ تاریخیں اور enums جیسی ویلیوز JSON میں سادہ سٹرنگز کے طور پر آتی ہیں؛ بعد میں انہیں ہاتھ سے محدود کریں، مثلاً status: 'active' | 'disabled'۔ رن ٹائم ویلیڈیشن کے لیے بنائی گئی ٹائپس کو Zod جیسی schema لائبریری کے ساتھ استعمال کریں۔

اکثر پوچھے جانے والے سوالات

کیا میرا JSON اپ لوڈ ہوتا ہے؟
نہیں۔ ٹائپس آپ کے براؤزر میں JavaScript سے بنتی ہیں۔ ٹوکنز یا ذاتی ڈیٹا والے API ریسپانسز کبھی آپ کے ڈیوائس سے باہر نہیں جاتے۔
اختیاری پراپرٹیز کیسے پہچانی جاتی ہیں؟
جب ایک ہی ارے کے آبجیکٹس میں مختلف کیز ہوں تو جو کیز کم از کم ایک آبجیکٹ میں غائب ہوں انہیں ? سے اختیاری نشان زد کیا جاتا ہے۔ ایک ہی آبجیکٹ ہو تو ہر کی لازمی ہے، جب تک آپ سب اختیاری پر نشان نہ لگائیں۔
کیا مجھے <code>unknown</code> استعمال کرنا چاہیے یا <code>any</code>؟
unknown زیادہ محفوظ ہے: TypeScript آپ کو استعمال سے پہلے ویلیو کو محدود کرنے پر مجبور کرتا ہے۔ any اس ویلیو کے لیے ٹائپ چیکنگ بند کر دیتا ہے۔ اسے صرف تب استعمال کریں جب آپ بعد میں ٹائپس بہتر کرنے کا ارادہ رکھتے ہوں۔
ISO تاریخ کی ٹائپ <code>string</code> کیوں ہے؟
JSON میں تاریخ کی کوئی ٹائپ نہیں، اس لیے ترسیل میں تاریخیں سٹرنگز ہوتی ہیں۔ اگر آپ پارس کرنے کے بعد انہیں new Date() سے تبدیل کرتے ہیں تو اپنے ماڈل میں پراپرٹی کو Date کر دیں۔
کیا یہ بڑے یا گہرائی تک نیسٹڈ JSON کو سنبھال سکتا ہے؟
جی ہاں۔ جنریشن ان پٹ کے سائز کے حساب سے لکیری ہے اور مقامی طور پر چلتی ہے، اس لیے کئی میگا بائٹ کے ریسپانسز ایک سیکنڈ سے کم میں تبدیل ہو جاتے ہیں۔

متعلقہ ٹولز